Tag: C#的

XElement命名空间(如何?)

如何创build具有节点前缀的XML文档,如: <sphinx:docset> <sphinx:schema> <sphinx:field name="subject"/> <sphinx:field name="content"/> <sphinx:attr name="published" type="timestamp"/> </sphinx:schema> 当我尝试运行像new XElement("sphinx:docset")我得到exception 未处理的exception:System.Xml.XmlException:名称中不能包含“:”字符(hex值0x3A)。 System.Xml.Xml.Linq.XName..ctor(XNamespace ns,String localName)在System.Xml.Linq.XNamespace.GetName(String localName)在System.Xml.XmlConvert.VerifyNCName(string名称,ExceptionType exceptionTyp e) .Xml.Linq.XName.Get(String expandedName) 谢谢你的帮助!;)

为什么在扩展类中调用扩展方法需要使用“this”关键字

我为ASP.NET MVC ViewPage创build了一个扩展方法,例如: public static class ViewExtensions { public static string Method<T>(this ViewPage<T> page) where T : class { return "something"; } } 从视图(从ViewPage )调用此方法时,我得到错误“ CS0103:名称'方法'不存在于当前的上下文中 ”,除非我用this关键字来调用它: <%: Method() %> <!– gives error CS0103 –> <%: this.Method() %> <!– works –> 为什么需要this关键字? 还是没有它的工作,但我错过了什么? (我认为这个问题一定有重复,但是我找不到) 更新 : 正如Ben Robinson所说 ,调用扩展方法的语法只是编译器糖。 那么为什么编译器不能自动检查当前types的基types的扩展方法,而不需要这个关键字?

根据x64 / x86更改C#DllImport目标代码

可能重复: 预处理器指令C# 我有一个外部的c + + dll导入使用DLLImport。 如果我的应用程序正在x64编译我需要导入此dll的x64版本,如果它是x86版本,我需要x86 dll。 达到这个目标的最好方法是什么? 理想情况下,我想要一些预处理指令,但我知道这不适用于C#? 更多信息:该DLL正在被设置为AnyCPU的项目导入。 父项目是确定应用程序编译为x64还是x86的项目。 我们为不同的客户编译两个版本 – 我想在两个版本中共享子项目。

在OpenMP并行代码中,memset是否能够并行运行?

我的内存块可能非常大(比L2高速caching大),有时我必须将它们设置为全零。 memset在串行代码中是好的,但是并行代码呢? 如果从并发线程中调用memset实际上可以加快大型数组的运行速度,有人会有经验吗? 甚至使用简单的openmp并行for循环?

用printf打印UTF-8string与多字节string文字

在像这样的语句中,两者都以相同的编码(UTF-8)input到源代码中,并且语言环境设置正确,它们之间是否有实际区别? printf("ο Δικαιοπολις εν αγρω εστιν\n"); printf("%ls", L"ο Δικαιοπολις εν αγρω εστιν\n"); 因此,在做输出时,是否有理由相对于另一个? 我想第二个performance会更糟,但是它在多字节文字上有什么优势(或缺点)吗? 编辑:这些string打印没有问题。 但是我没有使用宽string函数,因为我希望能够使用printf等。 所以问题在于这些印刷方式是否与以上所述情况不符?如果是这样,第二种方式有什么优势? 编辑2:下面的评论,我现在知道这个程序的作品 – 我认为是不可能的: int main() { setlocale(LC_ALL, ""); wprintf(L"ο Δικαιοπολις εν αγρω εστιν\n"); // wide output freopen(NULL, "w", stdout); // lets me switch printf("ο Δικαιοπολις εν αγρω εστιν\n"); // byte output } 编辑3 :我已经做了一些进一步的研究,看看这两种types正在发生什么。 采取更简单的string: wchar_t *wides = […]

主要的方法代码完全在try / catch里面:这是不好的做法吗?

通常我把所有的主要方法代码放在一个try / catch块中,如下所示: public static void Main(string[] args) { try { // code } catch (Exception e) { // code } } 我这样做是为了防止任何exception从程序逻辑的其余部分中跳出来,从而允许我做一些事情,比如将其显示到控制台,将其logging到文件等。但是,我被告知这是不好的做法。 你认为这是不好的做法吗?

从枚举属性获取枚举

我有 public enum Als { [StringValue("Beantwoord")] Beantwoord = 0, [StringValue("Niet beantwoord")] NietBeantwoord = 1, [StringValue("Geselecteerd")] Geselecteerd = 2, [StringValue("Niet geselecteerd")] NietGeselecteerd = 3, } 同 public class StringValueAttribute : Attribute { private string _value; public StringValueAttribute(string value) { _value = value; } public string Value { get { return _value; } } } 我想把我从一个combobox中select的项目的值放到一个int中: int […]

为什么C#generics不能从C ++模板中的genericstypes参数中派生出来?

为什么C#generics不能从C ++模板中的genericstypes参数中派生出来? 我的意思是我知道这是不可能的,因为CLR不支持这个,但为什么? 我意识到C ++模板和C#generics之间的巨大差异 – 前者是编译时实体,必须在编译期间解决,而后者是一stream的运行时实体。 尽pipe如此,我仍然没有看到CLRdevise者为什么没有提出一个最终能够从一个genericstypes参数中派生出一个CLRgenericstypes的scheme。 毕竟,这将是非常有用的function,我个人非常想念它。 编辑: 我想知道一个核心问题,即解决这个问题,实现这个function的价格如此之高,以至于目前还没有落实。 例如,检查这个虚构的声明: class C<T> : T { } 正如Eric Lippert所注意到的,如果“ 如果T是一个结构怎么办?如果T是一个封闭的types,该怎么办?如果T是一个接口types,该怎么办?如果T是C,该怎么办?如果T是一个具有抽象方法的抽象types?如果T比C具有更less的可访问性?如果T是System.ValueType?(可以有一个从System.ValueTypeinheritance的非结构体吗?)System.Delegate, System.Enum,等等? “ 正如Eric继续说的那样,“ 那些简单而明显的 ”。 的确,他是对的。 我感兴趣的是一个既不容易也不明显的问题的具体例子,这个问题很难解决。

什么时候在C#中调用静态构造函数?

当我有包含一个静态构造函数的类,当包含该类的程序集是第一次加载或当该类的第一个引用命中时调用该构造函数?

在c + + 11中string :: c_str()不再是空的吗?

在C ++ 11中, basic_string::c_str被定义为与basic_string::data完全相同,这又被定义为与*(begin() + n)和*(&*begin() + n) (当0 <= n < size() )时。 我找不到任何需要string在其末尾始终为空的字符。 这是否意味着c_str()不再保证产生一个以null结尾的string?