请教,在List集合中怎么得到元素的索引值,参考:http://www.myexception.cn/c-sharp/385022.html
这个可以用来读取窗口的多个textbox控件中内容:
------解决方案--------------------
你可以使用FindIndex方法
C# code
private void Form1_Load(object sender, EventArgs e)
{ TextBox textBox1 = new TextBox();
textBox1.Name = "X1";
TextBox textBox2 = new TextBox();
textBox2.Name = "X2";
TextBox textBox3 = new TextBox();
textBox3.Name = "X3";
TextBox textBox4 = new TextBox();
textBox4.Name = "X4";
List<TextBox> list = new List<TextBox> { textBox1, textBox2, textBox3, textBox4 };
int x = list.FindIndex(GetTextBox);
MessageBox.Show(x.ToString()); } private static bool GetTextBox(TextBox s)
{
if (s.Name == "X2")
{
return true;
}
else
{
return false;
}
}
读取textbox内容进list
c#中List <int[]>集合添加和查找元素,参考:http://blog.csdn.net/jinjazz/article/details/2387552
c#常用的数据存储分析参考:http://blog.csdn.net/zzmkljd/article/details/52343947
下面对list元素与形参相减排序得到与形参最接近的list元素:
static double TestIndex(double num)//定义函数查找list的与某元素最接近的值或值的索引
{
List<double> list = new List<double>();//新定义一个list
list.Add(0.0158);//向list中添加数据
list.Add(0.0238);
list.Add(0.0315);
list.Add(0.0446);
//下面通过select语句与匿名函数找到与形参最接近的值
return list.Select((d, i) =>
{
return new
{
Value = d,
Index = i
};
}).OrderBy(x => Math.Abs(x.Value - num)).First().Value ;//.First().Index;可以得到索引位置,返回值要改为int
}
http://bbs.csdn.net/topics/391078319
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1shiyan
{
class Program
{
static double TestIndex(double num)//定义函数查找list的与某元素最接近的值或值的索引
{
List<double> list = new List<double>();//新定义一个list
list.Add(0.0158);//向list中添加数据
list.Add(0.0238);
list.Add(0.0315);
list.Add(0.0446);
//下面通过select语句与匿名函数找到与形参最接近的值
return list.Select((d, i) =>
{
return new
{
Value = d,
Index = i
};
}).OrderBy(x => Math.Abs(x.Value - num)).First().Value ;//.First().Index;可以得到索引位置,返回值要改为int
} static void Main( string [] args)
{ double wo=TestIndex(0.0316);
List < int [] > alSchedule = new List < int [] > (); // 声明一个存放int[]元素的 集合
alSchedule.Add( new int [] { , , } );
alSchedule.Add( new int [] { , , , } );
int [] result = alSchedule.Find(FindElements);
if (result != null )
{
Console.WriteLine(result);
}
Console.Read();
}
private static bool FindElements( int [] arrInt)
{
return IsEquals(arrInt, new int [] { , , } );
}
public static bool IsEquals(Array array1, Array array2)
{
// 比较类型是否一样
if ( ! Object.ReferenceEquals(array1.GetType(), array2.GetType()))
{
return false ;
} // 比较长度是否一样
if (array1.GetLength( ) != array2.GetLength( ))
{
return false ;
} // 比较成员是否对应相等
ValueType v1, v2;
for ( int i = ; i < array1.GetLength( ); i ++ )
{
v1 = (ValueType)array1.GetValue(i);
v2 = (ValueType)array2.GetValue(i); if ( ! v1.Equals(v2))
{
return false ;
}
}
return true ;
} }
}
判断某list是不是list的元素
http://blog.csdn.net/jinjazz/article/details/2387552
各种变量声明时默认值:
class MyVar {
/*
* 基于安全的考虑,c#变量的初始化有一定的要求
* 1.所有的局部变量在被显示的初始化之前,都会被编译器当作未初始化,然后抛出编译期出错;
* 2.所有的字段级变量被编译器初始化为所属类型中等价于0的值.如布尔型的初始化为false,数值型的初始化为
或者0.0,所有引用类型都初始化为null.
* */
private string Name;
public void SaySomthing() {
string info;
Console.WriteLine(info);
}
/*
* 上面的代码中,Name是字段级变量,info是局部变量
* 在编译的时候就会报错.(使用了未赋值的info)
* 因为局部变量在使用时是必须要赋值的,而字段级的变量可以被编译器自动初始化. *
*/
/*
* 各种数据类型的默认值
* 整型的都返回0
* ushort 0
* ulong 0
* uint 0
* struct 整型的0,引用型的null
* short 0
* sbyte 0
* long 0
* int 0
* float 0.0F
* enum 枚举类型下标为0的元素
* double 0.0D
* decimal 0.0M
* char '\0'
* byte 0
* bool flase
*/
/*
从C#3.0开始,引入了var关键字,编译器可以通过它的初始值来判断具体类型.
* 根据上面的综述,var只能用于局部变量的声明,不能用于字段级别的声明,并且var声明的变量必须要有初始值,这样编译器才能判断变量的类型.
*/
}
默认值
http://www.cnblogs.com/guoyansi19900907/p/3664058.html
快速排序法,效率高:http://www.jb51.net/article/86442.htm