まず、これについて検索したところ、Stack Overflow で次のリンクが見つかりました。
でも僕はそうじゃない満足new object()
この回答では、よく説明されていません (よく理解できませんでした)。基本的に、との違いを知りたいのですnew {}
。コンパイル時と実行時にはどのように扱われますか?
次に、私はWebMethods
asp.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 {};