Tag: string

动态LINQ日期时间比较字符串构建 – Linq To实体

我正在使用Scott Guthrie的动态LINQ库以及Entity Framework和C#。 我必须根据几个因素将where字符串构建到变量中,然后将字符串变量传递给where子句。 出于某种原因,这将有效: ContactList = ContactList.Where(“DateAdded >= @0”, DateTime.Parse(“12/1/2012”)); 但这不起作用 string WhereClause = string.Format(“DateAdded >= {0}”, DateTime.Parse(“12/1/2012”)); ContactList = ContactList.Where(WhereClause); 如上所述,我需要在传递变量的版本中使用它。 谁知道为什么第二个不起作用? 提前致谢!

奇怪的字符串文字比较

深入了解C#,我遇到了一个与对象引用相等的小问题(奇怪)。 我说我有两个字符串: String a = “Hello world!”; String b = “Bonjour le monde”; bool equals = ReferenceEquals(a, b); // ******************* (1) b = “Hello world!”; equals = ReferenceEquals(a, b); // ******************* (2) (1)是false ,这是预期的。 ReferenceEquals 文档说 ReferenceEquals比较实例 但是之后: 为什么(2)返回true ? 字符串a和b不是同一个对象是吗? 如果是,那么它们是如何变得相同的,因为我从未明确地做过a=b

如何在C#中将字符串转换为byte

如何从C#中的字符串中获取字节数组? 我想将一个字符串传递给这个方法 。

如何为string.Format设置命名参数?

调用时出现C#错误: string.Format(format:”abbccc”, 1,22); 错误是“在指定了所有固定参数后必须出现命名参数规范” 我怎样才能解决这个问题? [编辑] 我更喜欢使用命名参数。

string.GetHashCode()在debug vs release中返回不同的值,我该如何避免这种情况?

令我惊讶的是,下面的方法在debug和release中产生了不同的结果: int result = “test”.GetHashCode(); 有什么方法可以避免这种情况吗? 我需要一种可靠的方法来散列字符串,我需要在调试和发布模式下保持一致的值。 如果可能的话,我想避免编写自己的哈希函数。 为什么会这样? 仅供参考,reflection器给了我: [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail), SecuritySafeCritical] public override unsafe int GetHashCode() { fixed (char* str = ((char*) this)) { char* chPtr = str; int num = 0x15051505; int num2 = num; int* numPtr = (int*) chPtr; for (int i = this.Length; i > 0; i -= 4) { […]

首先拆分然后加入字符串的子集

我有一个输入字符串如下: thumb_634735515600845357tchayat_november_200612.jpg 我想要做的是首先用_ 分割这个字符串。 然后将得到的标记放在1到n的位置并加入它们。 具体来说,就我的样本输入而言,这是我想要的输出。 如您所见, thumb_已从字符串的前面删除: 634735515600845357tchayat_november_200612.jpg 我知道怎么做分裂。 但接下来我如何进行加入步骤呢? 我意识到我可以使用for循环来进行连接。 但有更好的方法吗? 我不能使用子字符串方法来执行连接步骤,因为我在thumb_之前有数据。 最后,请注意thumb的_字符始终是_的第一个实例。

应该更改像这样的字符串的内容会导致exception吗?

请考虑以下代码: using System; using System.Runtime.InteropServices; namespace Demo { class Program { static void Main(string[] args) { const string test = “ABCDEF”; // Strings are immutable, right? char[] chars = new StringToChar{str=test}.chr; chars[0] = ‘X’; // On an x32 release or debug build or on an x64 debug build, // the following prints “XBCDEF”. // On […]

C#Strings(和其他.NET API)的大小是否限制在2GB?

今天我注意到C#的String类将字符串的长度作为Int返回。 由于Int总是32位,无论架构如何,这是否意味着字符串的长度只能是2GB或更小? 一个2GB的字符串将是非常不寻常的,并伴随着它出现许多问题。 但是,大多数.NET api似乎都使用’int’来表示长度和计数等值。 这是否意味着我们永远受限于适合32位的集合大小? 似乎是.NET API的一个基本问题。 我希望通过相当于’size_t’的方式返回count和length之类的东西。

来自Int的C#Char用作String – VB Chr()的真正等价物

我正在将VBA宏转换为C#。 在VBA中, chr(7)可以简单地连接到一个string ,就像chr()会产生一个string 。 为什么不能在C#中完成? 我试图找到我的问题的明确答案。 我已经在SO和其他几个网站上阅读了很多关于此的post和相关问题。 例如,这是一个关键答案(许多其他人被标记为dulpicates并重定向到这个): 在C#中VB的Asc()和Chr()函数的等价物是什么? 不幸的是,答案并不清楚,很多时候他们说这是正确的用法: string mystring=(char)7; 然而它给了我一个编译器错误,因为它不作为字符串进行求值。 我不得不用它来使它工作: string mystring=((char)7).ToString(); 这将等同于VB Chr()函数,实际上VB中的Chr()计算为字符串。 我的问题是:我是否总是需要将char显式转换为string或者在某些情况下它会隐式转换? 更新: Per @ Dirk的答案,这也有效: string mystring = “” + (char)7; 这并没有减少我的神秘感。 如果连接有效,为什么没有隐式转换? 我想对VB Chr()与C#中的等价物之间的区别进行全面解释。 我会很感激任何我可以阅读的参考资料,甚至可以做的例子。 提前致谢。

属性或索引器’string.this ‘不能分配给 – 它是只读的

我没有遇到问题 – 我试图做一个简单的动作: for(i = x.Length-1, j = 0 ; i >= 0 ; i–, j++) { backx[j] = x[i]; } 两者都宣布: String x; String backx; 问题是什么 ? 它说标题中的错误……如果有问题 – 还有另一种方法吗? 结果(名称为’backx’提示)是backx将向后包含字符串X. PS x不为空 – 它包含来自另一个字符串的子字符串。