Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法内联初始化异常';谁的数据?_C#_.net - Fatal编程技术网

C# 是否有方法内联初始化异常';谁的数据?

C# 是否有方法内联初始化异常';谁的数据?,c#,.net,C#,.net,我想在不创建异常变量的情况下,抛出带有附加数据的异常。大概是这样的: throw new Exception() { Data.Add("foo", "bar") }; 有可能吗?看起来您应该可以通过以下方式实现: throw new Exception { Data = { { "foo", "bar" } } }; (假设您使用的是具有集合初始值设定项的C#3…) 当然,您可以结合构造函数参数执行此操作: throw new ArgumentException("paramName")

我想在不创建异常变量的情况下,抛出带有附加数据的异常。大概是这样的:

throw new Exception() { Data.Add("foo", "bar") };

有可能吗?

看起来您应该可以通过以下方式实现:

throw new Exception { Data = { { "foo", "bar" } } };
(假设您使用的是具有集合初始值设定项的C#3…)

当然,您可以结合构造函数参数执行此操作:

throw new ArgumentException("paramName") { Data = { { "foo", "bar" } } };

不幸的是,您不能使用对象初始值设定项来调用这样的方法。

它确实有一个
参数化构造函数
获取字符串

  throw new Exception("Hello World");

问题并不十分清楚(即数据类型是什么…) 如果您的意思是需要将某些消息放入异常:

throw new Exception (Data.Add("foo", "bar").ToString());

这是否意味着
throw
将指针抛出到新的
Exception
对象?编辑:傻我,以为我是因为某些原因看C++问题,只是忽略我说的话。只是好奇为什么你要这么做?new Exception()将创建一个新的异常变量。@luketorjussen:它将创建一个新对象,但不是一个新变量(在C#级别)。如果该方法被称为Add,并且数据属性类型实现IEnumerable,您就可以了……哇,不知道我可以在只读属性上使用它。顺便说一句,它应该是
{{“foo”,“bar”}
,因为它是字典,它不是
Data={{“foo”,“bar”}
,因为
Data
属性是一个IDictionary?不是每个KeyValuePair都需要自己的一组大括号吗,或者这是不必要的语法吗?@Poma:你可以这样使用它,因为它是一个嵌入式对象初始值设定项;实际上,您并没有将
数据
设置为新集合,而是向其中添加项目。您也可以对值设置属性。谢谢。。。我没想到。我看到乔恩·斯基特想到了这一点,所以不要理会我的回答。