C#比较大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#比较大小相关的知识,希望对你有一定的参考价值。
四个文本框,前三个可输入double类型数据,在第四个文本框中显示最大的数字和最小数字的差的,有个按钮控制.
三个文本框算一组,每个里面输入个double型数据,求出最大值和最小值的差,有三组,意思就是9个文本框,总共要输入9个数据,
每组最大值减最小值的差之和除以3,就要这个数字,找个文本框显示,不会再变了
private void button1_Click(object sender, EventArgs e)//点击按钮事件
double[] num=new double[3];
double a = Convert.ToDouble(textBox1.Text);
num[0]=a;
double b = Convert.ToDouble(textBox2.Text);
num[1]=b;
double c = Convert.ToDouble(textBox3.Text);
num[2]=c;
double max=num[0],min=num[0];
for(int i=0;i<3;i++)
if(num[i]>max)
max=num[i];
if(num[i]<min)
min=num[i];
double sum=max-min;
textBox4.Text = sum.ToString();
本回答被提问者采纳 参考技术B 楼上的方法是对的,但是多定义了变量,浪费内存中的指针地址。。
比较两个字符串,在 C# 中忽略大小写 [重复]
【中文标题】比较两个字符串,在 C# 中忽略大小写 [重复]【英文标题】:Comparing two strings, ignoring case in C# [duplicate] 【发布时间】:2011-09-16 07:14:33 【问题描述】:以下两个哪个更有效? (或者也许还有第三种更好的选择?)
string val = "AStringValue";
if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))
或
if (val.ToLowerCase() == "astringvalue")
?
【问题讨论】:
我认为这是个错误的问题。正确的问题是“哪个更正确?” 还有 if (string.Compare(strA, strB, StringComparison.OrdinalIgnoreCase) == 0) 或 if (val.Equals("AStringValue", StringComparison.OrdinalIgnoreCase)),正确性通常归结为个人喜好,还有更多关于哪种方法正确的讨论***.com/questions/44288/… @asawyer,为什么它会“更正确”而不是“更有效”? Jon Skeet 已经回答了这个here。 我更喜欢 Equals,因为它是 Ronsell(它按照它在锡上所说的)在一行中。 ToLowerCase 需要阅读上面的行,结合他们的逻辑来找出你为什么要小写任何东西。 【参考方案1】:如果您正在寻找效率,请使用:
string.Equals(val, "astringvalue", StringComparison.OrdinalIgnoreCase)
顺序比较可能比文化感知比较快得多。
但是,如果您要对同一个字符串进行大量比较,那么ToLowerCase
可能是更好的选择。
与任何性能优化一样:衡量它,然后决定!
【讨论】:
在调用静态方法时,我总是使用类名,如String.Equals
,大写“S”,或者例如Int32.Parse
,而不是int.Parse
。 OrdinalIgnoreCase
的好提示。谢谢。
如果对同一个字符串进行大量比较,为什么 ToLowerCase 会是一个更好的选择?通过这样做,您每次都必须“降低”另一个字符串,这可能会很昂贵。
@FrederikGheysels 我认为 Sven 建议您将 ToLower() 的结果存储在一个变量中,然后针对该变量执行每个比较。
Microsoft 似乎建议您使用 ToUpperInvariant 而不是 ToLower - msdn.microsoft.com/en-us/library/dd465121.aspx - 用于您的多重比较方案。无论哪种情况,它都应该是一个 Invariant 方法。
@FrederikGheysels 正确,但 StringComparer.OrdinalIgnoreCase 的文档指出“OrdinalIgnoreCase 属性返回的 StringComparer 将要比较的字符串中的字符视为使用不变的文化,然后执行一个独立于语言的简单字节比较。” (见msdn.microsoft.com/en-us/library/…)。如果您可以存储比较左侧的结果,则只需在右侧完成工作。【参考方案2】:
第一个是正确的,恕我直言,效率更高,因为第二个“解决方案”实例化了一个新的字符串实例。
【讨论】:
但抛开效率不谈,我看到第二种解决方案的使用要多得多,因为它有效,更短,更容易输入,并且具有易于记忆、直接的格式。 “StringComparison.InvariantCultureIgnoreCase”……真的吗? @BengalTigger 至少,第二个示例应该使用ToLowerInvariant()
。但是,第一个可能会实例化两个新的字符串实例,所以不一定更快。【参考方案3】:
.ToLowerCase
版本不会更快 - 它涉及额外的字符串分配
(必须稍后收集)等。
就个人而言,我会使用
string.Equals(val, "astringvalue", StringComparison.OrdinalIgnoreCase)
这避免了文化敏感字符串的所有问题,但结果它避免了文化敏感字符串的所有问题。只有您知道在您的上下文中这是否可行。
使用string.Equals
静态方法可以避免val
成为null
的任何问题。
【讨论】:
你能告诉我们为什么你使用 StringComparison.OrdinalIgnoreCase 而不是 StringComparison.InvariantCultureIgnoreCase? @mqpasta - 当然,这取决于目的,但msdn.microsoft.com/en-us/library/… “这在比较以编程方式生成的字符串或比较不区分大小写的资源(如路径和文件名)时最合适。” - 另外,它有点快【参考方案4】:我对这种关于“效率”的问题的一般回答几乎总是,哪个版本的代码最易读,效率最高。
话虽如此,我认为(val.ToLowerCase() == "astringvalue")
对大多数人来说一目了然。
我所指的效率不一定是代码的执行,而是相关代码的维护和一般可读性。
【讨论】:
【参考方案5】:我敢冒险,最安全的方法是使用 String.Equals
来减少 val 为 null
的可能性。
【讨论】:
【参考方案6】:前者最快。原来val
是不可变的,因此使用 String.ToLowerCase() 创建了一个新的字符串对象,而不是直接与字符串比较器进行比较。如果您每秒执行多次,创建一个新的字符串对象可能会很昂贵。
【讨论】:
【参考方案7】:您可能还想查看已回答的问题 Differences in string compare methods in C#
【讨论】:
【参考方案8】:1st 更有效(也是最好的选择),因为val.ToLowerCase()
创建了一个新对象,因为字符串是不可变的。
【讨论】:
以上是关于C#比较大小的主要内容,如果未能解决你的问题,请参考以下文章