Tag: string

C#:具有相同内容的字符串

我听过并读过一个字符串不能改变(不可变?)。 我想这应该是正确的。 但我也听说过两个具有相同内容的字符串共享相同的内存空间(或者你称之为内存空间)。 它是否正确? 如果是这样,这是否意味着如果我创建一个包含数千个字符串的List,如果这些字符串中的大多数彼此相等,那么根本不会占用太多空间?

使用StreamReader检查文件是否包含字符串

我有一个字符串是args[0] 这是我的代码到目前为止: static void Main(string[] args) { string latestversion = args[0]; // create reader & open file using (StreamReader sr = new StreamReader(“C:\\Work\\list.txt”)); { while (sr.Peek() >= 0) { //code here } } } 我想检查我的list.txt文件是否包含args[0] 。 如果我有,那么我将创建另一个进程StreamWriter将字符串1写入文件,或者将0写入文件。 我该怎么做?

ReferenceEquals工作错误的字符串

为什么在这种情况下,对象的ReferenceEquals方法表现不同? string a= “fg”; string b= “fg”; Console.WriteLine(object.ReferenceEquals(a, b)); 所以在这种情况下,它得到的结果是true 。 如果它比较我的字符串的值而不是引用。 但是当我写下这样的话: StringBuilder c = new StringBuilder(“fg”); string d = c.ToString(); Console.WriteLine(object.ReferenceEquals(a, d)); 在这种情况下,它工作正常,结果是false ,因为它比较了我的对象的引用。

字符串和垃圾收集

我听过有关这个主题的相互矛盾的故事,我正在寻找一点清晰。 如何立即处理一个string对象,或者至少清除它的痕迹?

我该如何连接字符串?

这些例子之间有区别吗? 我应该在哪种情况下使用哪个? var str1 = “abc” + dynamicString + dynamicString2; var str2 = String.Format(“abc{0}{1}”, dynamicString, dynamicString2); var str3 = new StringBuilder(“abc”). Append(dynamicString). Append(dynamicString2). ToString(); var str4 = String.Concat(“abc”, dynamicString, dynamicString2); 有类似的问题: 字符串连接的差异只询问+运算符,并且在答案中甚至没有提到它被转换为String.Concat 什么是最好的字符串连接方法 ,它与我的问题没有真正关系,它要求最好的,而不是对串联字符串及其输出的可能方法的比较,正如这个问题所做的那样。 这个问题是询问每种情况会发生什么,这些例子的实际输出是什么? 他们有什么不同? 在哪种情况下我应该在哪里使用它们?

C#对象二进制序列化

我想对对象进行二进制序列化,并将结果保存到数据库中。 Person person = new Person(); person.Name = “something”; MemoryStream memorystream = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(memorystream, person); 如何将字符串类型中的memorystream转换为要保存在数据库中,之后能够反序列化对象?

解析十进制并在右边过滤额外的0?

从XML文件中我收到格式的小数: 1.132000 6.000000 目前我正在使用Decimal.Parse,如下所示: decimal myDecimal = Decimal.Parse(node.Element(“myElementName”).Value, System.Globalization.CultureInfo.InvariantCulture); 如何将myDecimal打印到字符串中,如下所示? 1.132 6

有没有办法在.net中动态执行字符串,类似于javascript中的eval()或sql中的动态sql?

有没有办法使用.net 2.0动态执行包含在字符串中的代码,方式与javascript中的eval()或tsql中的sp_executeSQL类似? 我在一个变量中有一个字符串值,我想在我的应用程序中的某个点操作 – 所以代码基本上是字符串操作。 我不知道将需要什么样的操作,所以我希望它们是可配置的。 我真的不关心动态代码编写的语言,无论是最容易实现还是编写简单。 例如,我可能想要替换’。’的实例。 带有’ – ‘的字符,或删除所有空格或类似字符。 如果我在sql中这样做我会使用动态sql,但我想在.net代码中执行它,如下所示: // Get the value to be manipulated string s = … // wherever s comes from // Get the manipulation code, eg this might come from a database // setting that can be changed without recompiling the .net code. string manipulation = Settings.GetSomeValue(“ManipulationSetting”); […]

如何使用WinForms PropertyGrid编辑字符串列表?

在我的应用程序中,我有一个属性网格,允许用户更改设置。 这适用于字符串和其他值属性,但我现在需要的是一个可由用户编辑的字符串列表。 问题是如果我有MyPropertyGrid.SelectedObject = new { Test = new List() }; 在我的代码中,用户尝试编辑Test属性,当他们单击Add按钮时,会发生以下错误: Constructor on type ‘System.String’ not found 这是有道理的,因为字符串是不可变的。 但是,我仍然需要一些方法来在属性网格中存储多个字符串(或类似字符串的数据)。 有没有人对如何实现这一点有任何想法?

为什么String.Concat没有针对StringBuilder.Append进行优化?

我发现常量字符串表达式的连接由编译器优化为一个字符串。 现在使用只在运行时知道字符串的字符串连接,为什么编译器不优化循环中的字符串连接和超过10个字符串的连接以使用StringBuilder.Append ? 我的意思是,这是可能的,对吗? 实例化StringBuilder并进行每个连接并将其转换为Append()调用。 有什么理由应该或不能优化? 我错过了什么?