Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中优雅地搜索结构数组,从C+移植+;? 我有一些C++代码,我在C语言中改写。我的C++很强大,但是对C语言很有新意,所以尽管我的C代码很好,但我还是忍不住觉得有一个更优雅的方法。 这是转换后的C代码——原始C++代码如下: public partial class NativeConstants { public const uint ID_50PS = 0; // 50 per second (20ms) public const uint ID_20PS = 1; // 20 per second (50ms) public const uint ID_10PS = 2; // 10 per second (100ms) public const uint ID_5PS = 3; // 5 per second (200ms) public const uint ID_2PS = 4; // 2 per second (500ms) public const uint ID_1S = 5; public const uint ID_2S = 6; public const uint ID_5S = 7; public const uint ID_10S = 8; public const uint ID_15S = 9; public const uint ID_20S = 10; public const uint ID_30S = 11; public const uint ID_1MIN = 12; public const uint ID_2MIN = 13; public const uint ID_5MIN = 14; public const uint ID_10MIN = 15; public const uint ID_15MIN = 16; public const uint ID_20MIN = 17; public const uint ID_30MIN = 18; public const uint ID_1HR = 19; public const uint ID_24HR = 20; public const uint ID_400PS = 21; // 400 per second (2.5ms) public const uint ID_200PS = 22; // 200 per second (5ms) public const uint ID_100PS = 23; // 100 per second (10ms) } struct SPeriodInfo { public string strItem; public int nItemData; public float fPeriod; public SPeriodInfo(string item, int itemData, float period) { strItem = item; nItemData = itemData; fPeriod = period; } } static readonly SPeriodInfo[] PeriodInfo = new SPeriodInfo[] { new SPeriodInfo("20 ms", NativeConstants.ID_50PS, (float)0.020), new SPeriodInfo("50 ms", NativeConstants.ID_20PS, (float)0.050), new SPeriodInfo("100 ms", NativeConstants.ID_10PS, (float)0.100), new SPeriodInfo("200 ms", NativeConstants.ID_5PS, (float)0.200), new SPeriodInfo("500 ms", NativeConstants.ID_2PS, (float)0.500), new SPeriodInfo("1 sec", NativeConstants.ID_1S, (float)1.0), new SPeriodInfo("2 sec", NativeConstants.ID_2S, (float)2.0), new SPeriodInfo("5 sec", NativeConstants.ID_5S, (float)5.0), new SPeriodInfo("10 sec", NativeConstants.ID_10S, (float)10.0), new SPeriodInfo("15 sec", NativeConstants.ID_15S, (float)15.0), new SPeriodInfo("20 sec", NativeConstants.ID_20S, (float)20.0), new SPeriodInfo("30 sec", NativeConstants.ID_30S, (float)30.0), new SPeriodInfo("1 min", NativeConstants.ID_1MIN, (float)60.0), }; float fPeriod = 0; for (int i = 0; i < PeriodInfo.Count(); ++i) { if (PeriodInfo[i].nItemData == slmRecordData.m_Settings.m_nSamplePeriod) { fPeriod = PeriodInfo[i].fPeriod; break; } } 公共部分类NativeConstants { 公共警察ID_50PS=0;//50每秒(20ms) 公共警察ID_20PS=1;//20每秒(50ms) 公共警察ID_10PS=2;//10每秒(100ms) 公共警察ID_5PS=3;//5每秒(200ms) 公共警察ID_2PS=4;//每秒2(500毫秒) 公共警察ID_1S=5; 公共警察ID_2S=6; 公共警察ID_5S=7; 公共警察ID_10S=8; 公共警察ID_15S=9; 警察身份证=10; 公共警察ID_30S=11; 警察ID_1分钟=12; 公安机关ID_2MIN=13; 警察ID_5分钟=14; 警察ID_10MIN=15; 公共警察ID_15分钟=16; 公共警察ID_20MIN=17; 公安部门ID_30分钟=18; 警察ID_1HR=19; 公共警察ID_24小时=20; 公共警察ID_400PS=21;//400每秒(2.5ms) 公共警察ID_200PS=22;//200每秒(5ms) 公共警察ID_100PS=23;//100每秒(10ms) } 结构SPeriodInfo { 公共弦乐; 公共数据; 公共浮动周期; 公共SPeriodInfo(字符串项、整数项数据、浮动周期) { 横纹=项目; nItemData=项目数据; F周期=周期; } } 静态只读SPeriodInfo[]PeriodInfo=新SPeriodInfo[] { 新SPeriodInfo(“20毫秒”,NativeConstants.ID_50PS,(浮动)0.020), 新SPeriodInfo(“50毫秒”,NativeConstants.ID_20PS,(浮动)0.050), 新SPeriodInfo(“100毫秒”,NativeConstants.ID_10PS,(浮动)0.100), 新SPeriodInfo(“200 ms”,NativeConstants.ID_5PS,(浮动)0.200), 新SPeriodInfo(“500毫秒”,NativeConstants.ID_2PS,(浮动)0.500), 新SPeriodInfo(“1秒”,NativeConstants.ID_1S,(浮动)1.0), 新SPeriodInfo(“2秒”,NativeConstants.ID_2S,(浮动)2.0), 新SPeriodInfo(“5秒”,NativeConstants.ID_5S,(浮动)5.0), 新SPeriodInfo(“10秒”,NativeConstants.ID_10S,(浮动)10.0), 新SPeriodInfo(“15秒”,NativeConstants.ID_15S,(浮动)15.0), 新SPeriodInfo(“20秒”,NativeConstants.ID_20S,(浮动)20.0), 新SPeriodInfo(“30秒”,NativeConstants.ID_30S,(浮动)30.0), 新SPeriodInfo(“1分钟”,NativeConstants.ID_1分钟,(浮动)60.0), }; float fPeriod=0; 对于(int i=0;i_C#_C++_Arrays_Struct - Fatal编程技术网

如何在C#中优雅地搜索结构数组,从C+移植+;? 我有一些C++代码,我在C语言中改写。我的C++很强大,但是对C语言很有新意,所以尽管我的C代码很好,但我还是忍不住觉得有一个更优雅的方法。 这是转换后的C代码——原始C++代码如下: public partial class NativeConstants { public const uint ID_50PS = 0; // 50 per second (20ms) public const uint ID_20PS = 1; // 20 per second (50ms) public const uint ID_10PS = 2; // 10 per second (100ms) public const uint ID_5PS = 3; // 5 per second (200ms) public const uint ID_2PS = 4; // 2 per second (500ms) public const uint ID_1S = 5; public const uint ID_2S = 6; public const uint ID_5S = 7; public const uint ID_10S = 8; public const uint ID_15S = 9; public const uint ID_20S = 10; public const uint ID_30S = 11; public const uint ID_1MIN = 12; public const uint ID_2MIN = 13; public const uint ID_5MIN = 14; public const uint ID_10MIN = 15; public const uint ID_15MIN = 16; public const uint ID_20MIN = 17; public const uint ID_30MIN = 18; public const uint ID_1HR = 19; public const uint ID_24HR = 20; public const uint ID_400PS = 21; // 400 per second (2.5ms) public const uint ID_200PS = 22; // 200 per second (5ms) public const uint ID_100PS = 23; // 100 per second (10ms) } struct SPeriodInfo { public string strItem; public int nItemData; public float fPeriod; public SPeriodInfo(string item, int itemData, float period) { strItem = item; nItemData = itemData; fPeriod = period; } } static readonly SPeriodInfo[] PeriodInfo = new SPeriodInfo[] { new SPeriodInfo("20 ms", NativeConstants.ID_50PS, (float)0.020), new SPeriodInfo("50 ms", NativeConstants.ID_20PS, (float)0.050), new SPeriodInfo("100 ms", NativeConstants.ID_10PS, (float)0.100), new SPeriodInfo("200 ms", NativeConstants.ID_5PS, (float)0.200), new SPeriodInfo("500 ms", NativeConstants.ID_2PS, (float)0.500), new SPeriodInfo("1 sec", NativeConstants.ID_1S, (float)1.0), new SPeriodInfo("2 sec", NativeConstants.ID_2S, (float)2.0), new SPeriodInfo("5 sec", NativeConstants.ID_5S, (float)5.0), new SPeriodInfo("10 sec", NativeConstants.ID_10S, (float)10.0), new SPeriodInfo("15 sec", NativeConstants.ID_15S, (float)15.0), new SPeriodInfo("20 sec", NativeConstants.ID_20S, (float)20.0), new SPeriodInfo("30 sec", NativeConstants.ID_30S, (float)30.0), new SPeriodInfo("1 min", NativeConstants.ID_1MIN, (float)60.0), }; float fPeriod = 0; for (int i = 0; i < PeriodInfo.Count(); ++i) { if (PeriodInfo[i].nItemData == slmRecordData.m_Settings.m_nSamplePeriod) { fPeriod = PeriodInfo[i].fPeriod; break; } } 公共部分类NativeConstants { 公共警察ID_50PS=0;//50每秒(20ms) 公共警察ID_20PS=1;//20每秒(50ms) 公共警察ID_10PS=2;//10每秒(100ms) 公共警察ID_5PS=3;//5每秒(200ms) 公共警察ID_2PS=4;//每秒2(500毫秒) 公共警察ID_1S=5; 公共警察ID_2S=6; 公共警察ID_5S=7; 公共警察ID_10S=8; 公共警察ID_15S=9; 警察身份证=10; 公共警察ID_30S=11; 警察ID_1分钟=12; 公安机关ID_2MIN=13; 警察ID_5分钟=14; 警察ID_10MIN=15; 公共警察ID_15分钟=16; 公共警察ID_20MIN=17; 公安部门ID_30分钟=18; 警察ID_1HR=19; 公共警察ID_24小时=20; 公共警察ID_400PS=21;//400每秒(2.5ms) 公共警察ID_200PS=22;//200每秒(5ms) 公共警察ID_100PS=23;//100每秒(10ms) } 结构SPeriodInfo { 公共弦乐; 公共数据; 公共浮动周期; 公共SPeriodInfo(字符串项、整数项数据、浮动周期) { 横纹=项目; nItemData=项目数据; F周期=周期; } } 静态只读SPeriodInfo[]PeriodInfo=新SPeriodInfo[] { 新SPeriodInfo(“20毫秒”,NativeConstants.ID_50PS,(浮动)0.020), 新SPeriodInfo(“50毫秒”,NativeConstants.ID_20PS,(浮动)0.050), 新SPeriodInfo(“100毫秒”,NativeConstants.ID_10PS,(浮动)0.100), 新SPeriodInfo(“200 ms”,NativeConstants.ID_5PS,(浮动)0.200), 新SPeriodInfo(“500毫秒”,NativeConstants.ID_2PS,(浮动)0.500), 新SPeriodInfo(“1秒”,NativeConstants.ID_1S,(浮动)1.0), 新SPeriodInfo(“2秒”,NativeConstants.ID_2S,(浮动)2.0), 新SPeriodInfo(“5秒”,NativeConstants.ID_5S,(浮动)5.0), 新SPeriodInfo(“10秒”,NativeConstants.ID_10S,(浮动)10.0), 新SPeriodInfo(“15秒”,NativeConstants.ID_15S,(浮动)15.0), 新SPeriodInfo(“20秒”,NativeConstants.ID_20S,(浮动)20.0), 新SPeriodInfo(“30秒”,NativeConstants.ID_30S,(浮动)30.0), 新SPeriodInfo(“1分钟”,NativeConstants.ID_1分钟,(浮动)60.0), }; float fPeriod=0; 对于(int i=0;i

如何在C#中优雅地搜索结构数组,从C+移植+;? 我有一些C++代码,我在C语言中改写。我的C++很强大,但是对C语言很有新意,所以尽管我的C代码很好,但我还是忍不住觉得有一个更优雅的方法。 这是转换后的C代码——原始C++代码如下: public partial class NativeConstants { public const uint ID_50PS = 0; // 50 per second (20ms) public const uint ID_20PS = 1; // 20 per second (50ms) public const uint ID_10PS = 2; // 10 per second (100ms) public const uint ID_5PS = 3; // 5 per second (200ms) public const uint ID_2PS = 4; // 2 per second (500ms) public const uint ID_1S = 5; public const uint ID_2S = 6; public const uint ID_5S = 7; public const uint ID_10S = 8; public const uint ID_15S = 9; public const uint ID_20S = 10; public const uint ID_30S = 11; public const uint ID_1MIN = 12; public const uint ID_2MIN = 13; public const uint ID_5MIN = 14; public const uint ID_10MIN = 15; public const uint ID_15MIN = 16; public const uint ID_20MIN = 17; public const uint ID_30MIN = 18; public const uint ID_1HR = 19; public const uint ID_24HR = 20; public const uint ID_400PS = 21; // 400 per second (2.5ms) public const uint ID_200PS = 22; // 200 per second (5ms) public const uint ID_100PS = 23; // 100 per second (10ms) } struct SPeriodInfo { public string strItem; public int nItemData; public float fPeriod; public SPeriodInfo(string item, int itemData, float period) { strItem = item; nItemData = itemData; fPeriod = period; } } static readonly SPeriodInfo[] PeriodInfo = new SPeriodInfo[] { new SPeriodInfo("20 ms", NativeConstants.ID_50PS, (float)0.020), new SPeriodInfo("50 ms", NativeConstants.ID_20PS, (float)0.050), new SPeriodInfo("100 ms", NativeConstants.ID_10PS, (float)0.100), new SPeriodInfo("200 ms", NativeConstants.ID_5PS, (float)0.200), new SPeriodInfo("500 ms", NativeConstants.ID_2PS, (float)0.500), new SPeriodInfo("1 sec", NativeConstants.ID_1S, (float)1.0), new SPeriodInfo("2 sec", NativeConstants.ID_2S, (float)2.0), new SPeriodInfo("5 sec", NativeConstants.ID_5S, (float)5.0), new SPeriodInfo("10 sec", NativeConstants.ID_10S, (float)10.0), new SPeriodInfo("15 sec", NativeConstants.ID_15S, (float)15.0), new SPeriodInfo("20 sec", NativeConstants.ID_20S, (float)20.0), new SPeriodInfo("30 sec", NativeConstants.ID_30S, (float)30.0), new SPeriodInfo("1 min", NativeConstants.ID_1MIN, (float)60.0), }; float fPeriod = 0; for (int i = 0; i < PeriodInfo.Count(); ++i) { if (PeriodInfo[i].nItemData == slmRecordData.m_Settings.m_nSamplePeriod) { fPeriod = PeriodInfo[i].fPeriod; break; } } 公共部分类NativeConstants { 公共警察ID_50PS=0;//50每秒(20ms) 公共警察ID_20PS=1;//20每秒(50ms) 公共警察ID_10PS=2;//10每秒(100ms) 公共警察ID_5PS=3;//5每秒(200ms) 公共警察ID_2PS=4;//每秒2(500毫秒) 公共警察ID_1S=5; 公共警察ID_2S=6; 公共警察ID_5S=7; 公共警察ID_10S=8; 公共警察ID_15S=9; 警察身份证=10; 公共警察ID_30S=11; 警察ID_1分钟=12; 公安机关ID_2MIN=13; 警察ID_5分钟=14; 警察ID_10MIN=15; 公共警察ID_15分钟=16; 公共警察ID_20MIN=17; 公安部门ID_30分钟=18; 警察ID_1HR=19; 公共警察ID_24小时=20; 公共警察ID_400PS=21;//400每秒(2.5ms) 公共警察ID_200PS=22;//200每秒(5ms) 公共警察ID_100PS=23;//100每秒(10ms) } 结构SPeriodInfo { 公共弦乐; 公共数据; 公共浮动周期; 公共SPeriodInfo(字符串项、整数项数据、浮动周期) { 横纹=项目; nItemData=项目数据; F周期=周期; } } 静态只读SPeriodInfo[]PeriodInfo=新SPeriodInfo[] { 新SPeriodInfo(“20毫秒”,NativeConstants.ID_50PS,(浮动)0.020), 新SPeriodInfo(“50毫秒”,NativeConstants.ID_20PS,(浮动)0.050), 新SPeriodInfo(“100毫秒”,NativeConstants.ID_10PS,(浮动)0.100), 新SPeriodInfo(“200 ms”,NativeConstants.ID_5PS,(浮动)0.200), 新SPeriodInfo(“500毫秒”,NativeConstants.ID_2PS,(浮动)0.500), 新SPeriodInfo(“1秒”,NativeConstants.ID_1S,(浮动)1.0), 新SPeriodInfo(“2秒”,NativeConstants.ID_2S,(浮动)2.0), 新SPeriodInfo(“5秒”,NativeConstants.ID_5S,(浮动)5.0), 新SPeriodInfo(“10秒”,NativeConstants.ID_10S,(浮动)10.0), 新SPeriodInfo(“15秒”,NativeConstants.ID_15S,(浮动)15.0), 新SPeriodInfo(“20秒”,NativeConstants.ID_20S,(浮动)20.0), 新SPeriodInfo(“30秒”,NativeConstants.ID_30S,(浮动)30.0), 新SPeriodInfo(“1分钟”,NativeConstants.ID_1分钟,(浮动)60.0), }; float fPeriod=0; 对于(int i=0;i,c#,c++,arrays,struct,C#,C++,Arrays,Struct,1)使用自动属性,并为SPeriodInfo() 2)不要使用手写循环来搜索句点,您可以使用或: 或 简单的LINQ表达式是: float fPeriod = PeriodInfo.FirstOrDefault(p => p.nItemData == slmRecordData.m.Settings.m_nSamplePeriod).fPeriod; 我擅长C++;-)对不起,林克fPeriod=PeriodInfo.First(p=>p.nItemData==slmRecordData

1)使用自动属性,并为
SPeriodInfo
()

2)不要使用手写循环来搜索句点,您可以使用或:


简单的LINQ表达式是:

float fPeriod = PeriodInfo.FirstOrDefault(p => p.nItemData == slmRecordData.m.Settings.m_nSamplePeriod).fPeriod;

我擅长C++
;-)对不起,林克
fPeriod=PeriodInfo.First(p=>p.nItemData==slmRecordData.m_Settings.m_nSamplePeriod)最初的C/C++已被编辑删除如果最初的C/C++代码再次被删除,我把它放在这里作为参考:我要改变的另一件事是使用毫秒或十进制来表示周期-浮点和双精度都不能准确表示这些值。之所以改为“类”只是为了使用自动属性还是有其他原因?从你提供的链接我看不出一个原因——这不是一个可变结构。@ PasLyy72使用C++词汇表,C语言中的结构作为值语义(例如,当参数通过时被复制),而类为RE。
float fPeriod = Array.Find(PeriodInfo,
    element => element.nItemData == slmRecordData.m_Settings.m_nSamplePeriod);
float fPeriod = PeriodInfo.FirstOrDefault(p=>p.nItemData == slmRecordData.m_Settings.m_nSamplePeriod).fPeri‌​od;
float fPeriod = PeriodInfo.FirstOrDefault(p => p.nItemData == slmRecordData.m.Settings.m_nSamplePeriod).fPeriod;