ホームページ >バックエンド開発 >C#.Net チュートリアル >C# 学習記録: 高品質のコードの作成と組織の改善に関する提案 4-8
4. TryParse は Parse よりも優れています
次の TryParse メソッド定義
public static bool TryParse(string s, out Double result);
Parse は変換が失敗した場合にエラーを報告しますが、TryParse は戻り値。変換が成功したかどうかを判断します。
string str1 = "abfc12"; if(double.TryParse(str1, out double dou1)) { Console.WriteLine(dou1); }
値の型を null にする必要がある場合、-1 などの特別な値を使用して、int が空かどうかを判断するには、int に変更するのが最善ですか?入力して null かどうかを判断します
Nullable<int> i1 = 4; // i2 和 i1 的定义方式一样 只是写法不同 下面的int?是一个语法糖 int? i2 = null; int i3 = 0; //int类型可以默认转为int?类型 i2 = i3; //int?类型需要强转成int类型,如果是null则变为0 i3 = (int)i2;
単純な違いは、const の方が効率的であり、readonly の方が柔軟であるということです
const はコンパイラ定数、readonly は実行時定数です
const int constNum = 1; public string name; public int age; public FirstType() { name = "aa"; age = constNum; age = 1; } //使用以上代码测试,下面的编译成的IL代码 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: nop IL_0007: nop IL_0008: ldarg.0 IL_0009: ldstr "aa" IL_000e: stfld string CSharpSuggest.FirstType::name IL_0013: ldarg.0 IL_0014: ldc.i4.1 IL_0015: stfld int32 CSharpSuggest.FirstType::age IL_001a: ldarg.0 IL_001b: ldc.i4.1 IL_001c: stfld int32 CSharpSuggest.FirstType::age IL_0021: ret
13、14、15 は 1a、1b、1c と同じであることがわかり、age = constNum; と age = 1; は同等であるため、最も効率的
const はプリミティブ型、列挙型、または文字列型のみを変更でき、読み取り専用に制限はありません
const は本来静的であり、static に追加できません
値readonly の構造は通常、関数内で値を代入するときに、各クラス オブジェクトに異なる readonly 値を持つことができますが、const は静的であるため、値はすべてのクラスで同じです。
#Book 上記の文では、いつも疑問がありましたが、クラスでの代入とコンストラクターでの代入の違いは何ですか? オンラインで見つけることができません。逆コンパイルされた IL コードは、次の違いだけです。変数定義の順番についてご存知でしたら教えてください。 。 7. 列挙型のデフォルト値として 0 を使用します。私が理解しているのは、予期しない結果が発生する可能性があるため、必要がない場合は列挙型の値を変更しないでください8. 列挙型要素には表示値を提供しないようにする理由は上記と同じです関連記事:C#Learning記録: 高品質のコードを作成して改善するための提案 1-3
C# 学習記録: 高品質のコードを作成して改善するための提案 9-15
以上がC# 学習記録: 高品質のコードの作成と組織の改善に関する提案 4-8の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。