1. ホーム
  2. c#

明示的および暗黙的なC#の

2023-10-02 09:22:52

質問

私は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";