c# 关于字段内存排序

关键字:StructLayout、LayoutKind.Explicit、FieldOffset

        [StructLayout(LayoutKind.Explicit)]
        public class AA
        {
            [FieldOffset(0)]
            public readonly Int16 m_x = 55;

            [FieldOffset(0)]
            public readonly Byte m_b = (Byte)22;

        }
            AA m = new AA();
            var d1 = m.m_b;
            var d2 = m.m_x;

输出的值:

字段定义交换顺序:

        [StructLayout(LayoutKind.Explicit)]
        public class AA
        {
            [FieldOffset(0)]
            public readonly Byte m_b = (Byte)22;

            [FieldOffset(0)]
            public readonly Int16 m_x = 55;
        }

同样的偏移量,输出的值以最后一个字段的值为准。

CLR保持开发人员的定义字段的顺序。

时间: 2024-10-26 00:51:07

c# 关于字段内存排序的相关文章

Oracle 如何对中文字段进行排序

Oracle 中对中文字段进行排序通常有三种方式 1)按笔画排序 select * from Table order by nlssort(columnName,'NLS_SORT=SCHINESE_STROKE_M') 2)按部首排序 select * from Table order by nlssort(columnName,'NLS_SORT=SCHINESE_RADICAL_M') 3)按拼音排序 select * from Table order by nlssort(columnN

对Java的Map的Value字段进行排序

构造TreeMap可以指定Comparator,但是不能对value字段进行排序.如果有需求对Value字段排序,例如map存放的是单词,单词出现次数,怎么按单词次数排序呢? 可以先将map中的key-value放入list,然后用Collections.sort对list排序,再将排序后的list放入LinkedHashMap,最后返回LinkedHashMap就可以了.LinkedHashMap可是个宝贝,可以通过构造方法制定是按放入的顺序,还是get顺序 排序.LinkedHashMap,

SQL按照指定顺序对字段进行排序

SqlServer按照指定顺序对字段进行排序 问题如下,在SqlServer有一个这样的SQL查询 SELECT *FROM ProductWHERE ID IN ( 12490, 12494, 12486 ) 在一个名为Product的表中对自增字段ID做in查询,他希望查出来的记录ID字段按照12490,12494,12486这个顺序来排,但是很不幸的是查出来后的记录是按照ID的进行正排序 这并不符合他的要求.     查出的结果如下: 由于对SQL实在是不熟悉,于是我查了点资料,发现可以用

Oracle中中文、数字,英文混杂形式的字段进行排序的方法

http://blog.csdn.net/p451933505/article/details/9272257 对Oracle中中文.数字.英文混杂形式的字段进行排序的方法: 例如: order by NLSSORT(字段名,'NLS_SORT = SCHINESE_PINYIN_M'), to_number(translate(字段名, '0123456789' || 字段名, '0123456789')) NLSSORT() 函数: 可以使用NLSSORT()函数可以改变Oralce 对汉字

Java中对单个或多个字段进行排序

Java中对单个字段或多个字段进行排序 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * @date: 2015年6月19日 上午10:11:44 */ public class CollectionTest { /** * 主方法 * * @param args * 参数 * @modify by user: {修

Lucene使用SortField对多个字段进行排序

/* * 这里的类实现的功能是对多个字段进行排序 * 比单个难度要大,但是有相应的方法,可以满足不同项目的不同需求 * */ package score; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field

SQLServer 2008 R2 对同时含有数字和中文的字段进行排序

若是数据库中的某一个字段名为bedNO,类型为nvchar,里面有{1,2,3,11,12,23,加2,加3}这些数据. 此时我需要对这些数据进行排序,数字按大小拍前面,汉字按第一个字拼音首字母的顺序排后面,即需要1,2,3,11,12,23,加2,加3这样的结果. 通常用order by bedNO排序的话,得到的结果是:1,11,12,2,23,3,加2,加3,无法得到需要的顺序. 若是用order by cast(bedNO as int),则加2和加3这样的数据会报错,因为无法转换成in

SQL char字段类型排序

我是做的ACCESS时候需要对字段的值进行排序,字段格式是char类型的,但是存的值是数字.现在需要对该字段进行排序. 通过查找,找到以下两种方法,记录下来. 1. 你可以转换成int型再排序 select * from JZD order by convert(int,id) desc 但是这种方法在ACCESS里不好用,因为没有convert函数. 所以最终利用的是第2钟方法 2.你可以在前面补零,然后截取同样长度再排序 select * from JZD order by right('0

php根据某一数组字段进行排序

$array = array( 0 => array( 'id' => 1, 'name' => 1, 'ord' => 1, ), 1 => array( 'id' => 3, 'name' => 3, 'ord' => 3, ), 2 => array( 'id' => 2, 'name' => 2, 'ord' => 2, ), ); $ords = array(); //提取排序字段 foreach($array as $v1