明示的および暗黙的なC#の
質問
私はC#の初心者で、新しい単語を学んでいます。私はそれがプログラミングC#に来るとき、これらの2つの単語の意味を理解することは困難であると感じています。 私は意味を辞書で調べ、私が得たものは次のとおりです。
暗黙の
暗黙的なものは、間接的な方法で表現されます。
"ある品質や要素が何かに暗黙的に含まれている場合、それはそれに関与しているか、それによって示されている;"。
明示的
<ブロッククオート明示的なこととは、何かを隠そうとすることなく、はっきりと公然と表現したり示したりすることです。
"何かについて明示的である場合、それについて非常にオープンではっきりと話すことです"
C#で理解したいです。
お世話になります。
乾杯
追加情報です。
今読んでいる本の中で、この「implicit」という単語が使われている文章があります。
<ブロッククオート
つまり、「面積」と「居住者」は
AreaPerPerson( )
暗黙のうちに
を呼び出すオブジェクトの中にあるこれらの変数のコピーを参照します。
AreaPerPerson( )
"を呼び出します。
この文章が何を言おうとしているのか、全く理解できない。
どのように解決するのですか?
この
implicit
と
explicit
のキーワードは,変換演算子を宣言する際に使用されます.例えば、次のようなクラスがあるとします。
public class Role
{
public string Name { get; set; }
}
もし、新しい
Role
を割り当て、そこに
Name
を割り当てる場合、通常はこのようにします。
Role role = new Role();
role.Name = "RoleName";
プロパティが1つしかないので、代わりにこんな風にできたら便利かもしれませんね。
Role role = "RoleName";
これはつまり
暗黙のうちに
文字列を
Role
(に暗黙的に変換します(コードに特定のキャストが含まれないため)。これを実現するために、暗黙の変換演算子を追加します。
public static implicit operator Role(string roleName)
{
return new Role() { Name = roleName };
}
もう一つの選択肢は、明示的な変換演算子を実装することです。
public static explicit operator Role(string roleName)
{
return new Role() { Name = roleName };
}
この場合、文字列を暗黙のうちに
Role
に暗黙的に変換することはできませんが、コード内でキャストする必要があります。
Role r = (Role)"RoleName";
関連
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] AddTransient、AddScoped、AddSingleton サービスの相違点
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] C#のインターフェイス。暗黙の実装と明示の実装
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] 自分のクラスにカスタムキャストのサポートを提供するにはどうすればよいですか?