C#比较大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#比较大小相关的知识,希望对你有一定的参考价值。

四个文本框,前三个可输入double类型数据,在第四个文本框中显示最大的数字和最小数字的差的,有个按钮控制.
三个文本框算一组,每个里面输入个double型数据,求出最大值和最小值的差,有三组,意思就是9个文本框,总共要输入9个数据,
每组最大值减最小值的差之和除以3,就要这个数字,找个文本框显示,不会再变了

参考技术A 我已经把问题解决到这了 如果你再不会的话 你学这个也没意思了
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.ParseOrdinalIgnoreCase 的好提示。谢谢。 如果对同一个字符串进行大量比较,为什么 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#比较大小的主要内容,如果未能解决你的问题,请参考以下文章

C# 时间比较大小

C#比较大小

用c#比较三个数的大小,并输出最大数。

比较两个字符串,在 C# 中忽略大小写 [重复]

C# TCP编程 NetworkStream 的大小?

C#中String的静态方法Compare(str1,str2)比较字符串大小