C# の `new object()` と `new {}` の違いは何ですか? 質問する

C# の `new object()` と `new {}` の違いは何ですか? 質問する

まず、これについて検索したところ、Stack Overflow で次のリンクが見つかりました。

でも僕はそうじゃない満足new object()この回答では、よく説明されていません (よく理解できませんでした)。基本的に、との違いを知りたいのですnew {}コンパイル時と実行時にはどのように扱われますか?

次に、私はWebMethodsasp.netのシンプルなアプリケーションで使用した次のコードを持っています。

[WebMethod]
[ScriptMethod(UseHttpGet = false)]
public static object SaveMenus(MenuManager proParams)
{
    object data = new { }; // here im creating an instance of an 'object' and i have typed it `new {}` but not `new object(){}`.
    try
    {
        MenuManager menu = new MenuManager();    
        menu.Name = proParams.Name;
        menu.Icon = proParams.Icon;
        bool status = menu.MenuSave(menu);
        if (status)
        {
            // however, here i'm returning an anonymous type
            data = new
            {
                status = true,
                message = "Successfully Done!"
            };
        }
    }
    catch (Exception ex)
    {
        data = new { status = false, message = ex.Message.ToString() };
    }
    return data;
}

それで、(コード内のコメントでわかるように)どのように、new object(){}そしてnew {}違いは何でしょうか?

これは私がコードを記述する正しい方法なのでしょうか? このコードに最適な方法を提案していただけますか?

わかっています、うまく説明できないし、質問もたくさんしていますが、今のところはこれが最善です。

ベストアンサー1

new {...}常に匿名オブジェクト、 例えば:

  Object sample = new {};
  String sampleName = sample.GetType().Name; // <- something like "<>f__AnonymousType0" 
                                             //                    not "Object"

whileはクラスnew Object()のインスタンスを作成しますObject

  Object sample = new Object() {};
  String sampleName = sample.GetType().Name; // <- "Object"

すべてのオブジェクト(匿名のものも含む)はから派生しているので、Object常に次のように入力できます。

  Object sample = new {};

おすすめ記事