精华内容
下载资源
问答
  • 结构、枚举数组

    2017-12-14 19:41:52
    一、结构   1、定义   struct Position  { 结构struct,有不同对象中  public fl

    一、结构                                                               

      1、定义                       
        struct Position
        {                                 结构struct,当有不同对象中
            public float x;                    含有相同的类型变量时可以使用
        public float y; 
        public float z;
        }
      2、使用
        class Program
       {
            static void Main(string[] args)
       {
    Position enemy1Position;
    enemy1Position.x = 34;
       }  
       }
       在C#中结构体是一个值类型,如果s2 = s1,传递的只是s1的值,
             s2不会随着s1的值改变而改变!!
       
       

    二、枚举                                                                               

     1、定义
       enum GameState
       {
          Pause,
          Failed,
          Success,
      Start
       }       
     2、使用
          GameState start = GameState.start

    三、数组  

    1、声明与赋值数组
        int[] score = {11,22,33,44,55,66,77,88};
    2、第二种
        int[] score;
    score = new int[8];
    3、第三种
    int[]score = new int[8]{11,22,33,44,55,66,77,88};
    4、数组的遍历
    for(int i = 0; i < score.Length;i++)
    {
    执行的代码;
    }


    int i = 0; 数组之间的传递为引用传递
    while(i < score.Length)
    {
    i++;
    }


    foreach(int i in score)
    {
    要执行的代码;
    }
    5、二维数组
    (1)声明与初始化数组
    int[,] i = new int[3,3]             3行3列,9个存储空间
    (2)赋值
    i[0,0] = 1;    i[1,0] = 11;      i[2,0] = 111;
    i[0,1] = 2;    i[1,1] = 22;      i[2,1] = 222;
    i[0,2] = 3;    i[1,2] = 33;      i[2,2] = 333;
    (3)获取某个轴向的元素个数
        i.GetLength

    四、字符串处理

    string str = "www.taikr.com";
    for(int i = 0; i < str.Length; i++)
       {
           要执行的代码;
       }
    要使用某些处理字符串的函数,如ToLower(),要先给这个字符串
          赋给一个新变量
    string res = str.ToLower();
    展开全文
  • C#总结【常量-枚举-数组

    千次阅读 热门讨论 2016-11-27 11:52:16
     我们定义多个相同类型的变量时,我们就要定义数组了,这样减轻了定义同类型变量的痛苦。 定义数组的4中方式。 //数组的声明方式: //第一种 int[] number = new int[] { 1, 2, 3 };//表示数组中只有三个数 /...

    常量:

      是一种恒定的或不可变的数值或数据项。在C#中使用const可以将变量定义为常量。

      语法:const 常量类型 常量名 = 常量值;//常量只有在初始化的时候可以赋值

    枚举:

      还有一种特殊的常量——枚举常量。

      现在我先介绍一下常量和枚举之间的区别和关系。

    1、常量是一个不变的值,而枚举是一组不变的值。

    2、枚举需要事先定义再使用,而常量是在任何时候随便定义。

    枚举的好处:

    1、限制用户输入,只能在列举的值中选择,保证输入格式的正确性。

    语法:

    enum 自定义的类型名称{值1,值2,值3...值n}

    例如:

     public enum Gender    //这是枚举的声明,枚举放的位置为类外面,这样可以共用。
        {
            男,
            女
        }
    //使用:
     Gender man = Gender.男;
    
    注意事项:
    1、 为了使枚举在所有的类中都可以使用,要讲这个枚举设在类的外面。
    2、 定义枚举时,不要将枚举值设置为int类型。
    3、 枚举常量可以强制转化为int类型。因为在枚举值的在定义的时候有个一默认的从零开始的编号。
    4、 可以在枚举后面加上编号。这样可以将枚举值替代int类型的编号。
    例如
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
        public enum Gender    //这是枚举的声明,枚举放的位置为类外面,这样可以共用。
        {
            男,
            女
        }
     
    
        class 枚举
        {
            static void Main(string[] args)
            {
                Gender man = Gender.男;
                
                Console.WriteLine  ("验证一:将枚举值“男”赋值为man:"+man);
                Console.WriteLine ("验证二可以通过枚举,将枚举强制对应的编号:{0}",(int)man);     //证明了这里可以将枚举强制转换为
                Console.ReadKey ();
    
                //Gender women = Gender.女;
                //Console.WriteLine  (women );
                //Console.WriteLine("{0}",(int )women );
                //Console.ReadKey();
            }
        }
    }

    数组:

      当我们定义多个相同类型的变量时,我们就要定义数组了,这样减轻了定义同类型变量的痛苦。

    定义数组的4中方式。

     //数组的声明方式:
                //第一种
                int[] number = new int[] { 1, 2, 3 };//表示数组中只有三个数
                //d第二种方式
                int[] nums=new int [15];    //表示定义了15个数
                //第三种方式
                int[] nums2 = new int[3] { 1,2,3};
                //第四种
                int[] num4 = { 1,2,2,1,3};


    展开全文
  • 我们遍历一个数组的时候,可以有length方法去获知数组的长度,进而设置循环上限去遍历,可是对象没有length方法,我们就只能利用for in方法去遍历: obj={ work:student, name = "xxx", sex="male", proe:123,...

    对象枚举

    for in
    当我们遍历一个数组的时候,可以有length方法去获知数组的长度,进而设置循环上限去遍历,可是对象没有length方法,我们就只能利用for in方法去遍历:

    obj={
    	work:student,
    	name = "xxx",
    	sex="male",
    	proe:123,
    }
    for (var x in obj){
    	console.log(x);
    }
    

    程序的结果会是依次输出work,name,sex,proe;当我们想要依次获取属性值的时候,最先想到的一定会是:

    for (var x in obj){
    	console.log(obj.x);
    }
    

    但结果却会超出我们的的预期,他会输出四个undefined,为什么会这样呢?
    我们需要知道的是obj.x------>obj[‘x’],这两个语法是相等的,当我们每次对象.属性时,程序就会帮我们做这样的隐式转换。所以在程序中,它会认为是我们在寻找obj对象当中的x属性,没有就会输出undefined,这是新手常常会犯的一个错误。我们只需要将代码改成如下:

    for (var x in obj){
    	console.log(obj[x]);
    }
    

    这样,x就会作为一个变量去使用,而不会再被隐式的转化为字符串了。

    hasOwnProperty

    这个方法用来判断自己所定义的所有属性/方法,返回值为布尔内型

    对象.hasOwnProperty("属性值/方法")
    

    只要是自己所定义的,他都会返回true,即使我们以这样的方式来定义:Object.prototype.abc=123;把属性定义在他的顶级原型中,当我们判断时依旧会返回给我们true,但当我们想要判断顶级原型中的toString()方法,由于是系统自动定义,所以会返回true。

    in

    ABC in A
    

    这个方法类似于上一个方法,他也用来判断某一属性或方法是否存在于对象,但不同的是,它的搜索范围在整个原型链当中,不管是不是我们自己定义的,只要存在,他就会返回true。

    instanceof

    这个方法用来判断A的原型链上有没有B的原型。

    A instanceof B;
    

    我们就可以用这种方法来判断,对象和数组的区别,[ ] instanceof Array返回的是true,而{ } instanceof Array返回的就会是false。

    arguments.callee

    callee方法是被定义在arguments对象身上的,用来判断函数的引用,当一些立即执行函数,需要使用递归时,发现它自身是没有函数名的,所以我们就会用到这个方法:

    //递归计算100的阶乘
    var test = (
    	function (n){
    	if (n === 1)
    		return;
    	else
    		return n * arguments.callee(n-1);
    }(100))
    

    fun.caller

    返回当前调用的环境,主要是要区分它和callee方法的不同之处,一个返回当前环境,一个返回函数引用。

    克隆

    克隆我们也可以称之为复制,把一个对象完全的复制到另一个对象的身上,我们可以利用函数去遍历原始对象,然后用新对象一个一个的去接收原始对象的属性,若属性为原始内型,我们复制的只是表层的数据,但当属性为引用值时,我们复制过来的就将会是引用值得地址,当我们修改原始属性时,复制后对象的相应属性也会受到影响,所以我们要做进一步的优化克隆,编写以下函数来解决上述问题:

    obj={
    	name:"xxx,
    	a:1,
    	b:[1,2,3,4],
    	c:{
    		c1:1,
    		c3:3,
    		c2:2
    	}
    };
    obj1={};
    
    function Clone(target,origin){
    	var target = target || {};
    	var toStr = Object.prototype.toString();
    	var strRes = "[Object,Array]";
    	for (var proe in origin){
    		if(origin.hasOwnProperty(proe)){
    			if(typeof(origin[proe]) !== 'null' && typeof(origin[proe]) == 'Object'){
    				if(toStr.call(origin[proe] == strRes)){
    					target[proe] = [];
    				}
    				else{
    					target[proe] = {};
    				}
    				Clone(origin[proe],target[proe]);
    			}
    			else{
    				target[proe] = origin[proe];
    			}
    		}
    	}
    	return target;
    }
    
    

    obj和obj1分别代表被克隆和克隆的两个对象,Clone函数内部主要完成以下几个功能:

    • 若用户未传要接收克隆的对象,则使用{}代替,
    • 判断被克隆对象的自定义属性,并挨个遍历
    • 用typeof来判断当前属性是否为原始内型,并做出相应步骤
    • 判断引用内型的具体内型,根据不同结果,递归再克隆。
      这样克隆出来的对象,就不会再受到原始对象的数据修改的影响。

    数组

    数组运行存在undefined,当我们**a = [1,2,3,,,4]**这样去定义数组的时候,他会将空缺值自动填补undefined,而不是报错,而且数组运行越界访问,同样会返回undefined,js当中对于数组的检查还是比较松的,一般情况不会报错,他一共有两种定义方式,一种是字面表达式,还有就是创建数组对象去定义,一般的话前者居多。
    这里介绍几种关于数组的方法:

    改变原数组

    • push方法
      该方法可以在原数组的末尾添加t元素,添加个数不限。
    Array.prototype.push = function (target){
    	this[this.length] = target;
    	this,length++;
    }
    

    以上代码为Array原型中的push方法,底层基础有助于我们了解类数组中该如何改变属性值

    • pop方法
      该方法可以在原数组去除最后一个元素。

    • unshift方法
      该方法可以在原数组的最前面依次添加元素,添加个数不限。

    • shift方法
      该方法可以在原数组去除最前面的一个元素。

    • reverse方法
      该方法可以将原数组进行翻转显示。

    • splice方法
      该方法用来切割数组,负数代表倒数元素。最多可以选择三个参数,

      • 第一个参数:选择切割的起点元素
      • 第二个参数:选择切割的个数
      • 第三个参数:选择切割后的填补值
    • sort方法
      该方法用于对于给数组排序,但是如果单纯的以数组名.sort()方法去调用它,结果可能和我们想象的还是有所差异,他会按字符编码去排,但是sort方法允许我们传一个函数去自定义按照我们的想法去排序,具体语法如下:

    a = [1,4,-3,4,6,7,2,4,5];
    a.sort(
    	//当返回值为正数的时候,保持位序不变
    	//当返回值为负数的时候,交换两数的位置
    	//当返回值为0的时候,保持位序不变
    	function (a,b) {
    		if(a < b){
    			return 1;
    		}
    		else{
    			return -1;
    		}
    	}
    )
    

    以上代码我们定义了一个正序的排序方法,由注释可知如何排序,可根据我们自己定义的返回值去判断,而sort的内部就相当于进行了冒泡排序的算法,一步一步的调用我们所传的这个函数去做判断,当然,代码有可以简化的部分,我们可以直接将函数体改为return a-b;这样数组依旧可以进行正序排序,反之就会进行逆序排序。

    • 分享一个需求小练习
      如果我们需要一个数组每次都以乱序去展示,该如何利用sort方法去实现呢?
      • 其实我们可以利用random随机数和sort配合去使用Math.random()方法每次回返回一个(0,1)范围里的数字,所以我们让它减去0.5,那么这个返回值就可能为负数,也有可能为正数,再将它作为sort参函数的返回值,就能够达到我们的需求。

    不改变原数组

    • concat方法
      该方法用于连接两个数组,并将结果返回,不会修改原始数组。
    • join方法
      该方法用于将数组以形参值连接起来转换成字符串进行返回
    • toString方法
      该方法用于将数组转化为字符串进行返回。
    • slice方法
      该方法用于截取数组元素,最多两个参数,截取起始位置到截取结束位置,若参数只有一个,则默认从该位置截取到最后一个。负数代表倒数元素

    类数组

    一个很像是数组的对象,如我们熟知的argument,它像是数组一样存储了我们的实参,但是数组所拥有的方法它全不具有,所以我们称它为类数组。

    var obj = {
     
                    "0" : 'a',
     
                    "1" : 'b',
     
                    "2" : 'c',
     
                    "length" : 3,
     
                    "push" : Array.prototype.push
     
                }
    

    像这样我们主动给他加上数组所拥有的length属性以及push方法,把他变得更加像一个数组,然后我们就可以调用他的push方法了,在此之前,我们需要了解push方法的实质内涵,才能明白类数组如何去push属性,在前面我们已经提及过,他是要根据length属性的值来添加。他在”2”的后面加了一个”3”:’d’,并且lenngth也变成了四,这些都是一个对象不能具备的东西。
    类数组必须有几个组成部分:
    类数组最好包含的四个组成部分

    • 属性要为索引(数字)属性
    • 必须有length属性
    • 最好加上push方法
    • “splice” : Array.prototype.splice

    分享一个阿里巴巴面试的小练习

    28var obj = {
     
                    "2" : 'a',
     
                    "3" : 'b',
     
                    "length" : 2,
     
                    "push" : Array.prototype.push,
     
                }
     
                obj.push(obj);
    

    this.length等于2,所以就把a换成c了吧,length等于3,第二次this.length等于2,把d换成d,length+1变成4。

    var obj = {
     
                    "2" : 'c',
     
                    "3" : 'd',
     
                    "length" : 2,
     
                    "push" : Array.prototype.push,
     
                }
    

    分享一个数组去重的方法

    主要思路是利用对象不可能存在重名属性,从数组依次读值,然后去对象中判断是否含有该属性,若没有则定义,若有则说明数组有重值,就可以过滤掉。

    Array.prototype.unique=function () {
    	var len = this.length,obj = {},arr = [];
    	for(var i = 0;i < len;i++){
    		if(!obj[this[i]]){
    			obj[this[i]] = "xxx";//这里属性值可随意填写
    			arr.push(this[i]);
    		}
    	}
    	return arr;
    }
    

    当对象内未定义该方法,返回undefined,取非则为true,然后对它进行存储,属性值可以写除0外的任意值,因为当读取属性值返回0,取反,判断仍然为true,所以可能会存在存取误差。

    展开全文
  • 010-常量、枚举、结构、数组 一、常量 在程序运行过程中,其值是不能发生改变的量 const int number = 5; 定义的时候就必须赋值。 二、枚举 定义:是用户定义的一组整数类型。 理解:可以理解为将一些常用的且属于...

    010-常量、枚举、结构、数组

    一、常量

    在程序运行过程中,其值是不能发生改变的量
    const int number = 5;
    定义的时候就必须赋值。

    二、枚举

    定义:是用户定义的一组整数类型。

    理解:可以理解为将一些常用的且属于同一类型的常量放在一起,当使用时,直接使用枚举列出其中的值,使用其中一个就行了。比如定义一个颜色的枚举,在设置某个颜色时候,直接枚举.颜色就行了

    使用:定义好的枚举可以直接使用,不需要实例化。

    优点:减少代码重复性,对于一系列不会变化的值,可以写成枚举,省去了定义常量值,易于程序维护。枚举真正强大之处在于它们在后台会实例化为派生于基类Sytem.Enum的结构,这表示它们可以对它们调用方法,执行有用的任务,因为.NET Framework的执行方式,在语法上把枚举当做结构不会造成性能损失,实际上,一旦代码编译好,枚举就成为基本类型,与int和float类型一样。

    和类同级别
    enum Gender //使用Gender类型定义一个变量来表示张三的性别
    {
    男;
    女;
    }

    方法
    {
    Gender zsGender;
    zsGender = Gender.男;
    zsGender = Gender.女;
    }

    枚举类型的每个值都对应一个int类型的编号,默认从0开始,值不能为数字。

    注:
    1、枚举和int类型转换需要用强制转换
    2、字符串与枚举之间的转换
    ToString() 所有类型都可以通过ToString()转换成字符串
    字符串==》枚举:
    qqState = (QQState )(Enum.Parse(typeof(QQState), state);
    (要转换的类型)(Enum.Parse(typeof(要转换的枚举类型),要转换的字符串));

    三、结构

    可以一次定义多个不同类型的变量,他是一种类型。
    与类同级别

    public struct Student
    {
    public string name;
    public Gender gender;
    public int age;
    public int height;
    public int weight;
    }

    类里边调用:
    Student stu1 = new Student();
    stu1.name = “zhangsan”;
    stu1.age = 18;
    stu1.height = 180;
    stu1.weight = 80;
    stu.gender = Gender.男;
    "."点表示成员访问符。

    四、数组

    一次定义多个相同类型的变量。
    int[] scores = new int[60];
    []:索引器
    new:关键字开辟空间
    60:索引,从0开始

    整型变量没有默认值
    整型数组开辟空间后,默认值为0
    数组长度:scores.Length

    展开全文
  • C#——枚举 & 结构 & 数组

    热门讨论 2018-05-16 21:02:12
    枚举是由一组特定常量构成的一组数据结构,是值类型的一种特殊形式,需要一个由指定常量集合组成的数据类型时,使用枚举类型。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型...
  • 一、三种方法转换字符串变成数字 1.1.Parse的使用 这两个使用结果一样,用户输入...我们定义一个变量之后,前边有紫色图标的说明这是一个方法,我们想要使用哪个的时候,会出现一个说明,这个东西很好,这...
  • 一,当枚举一个数组的时候: 1.使用 for (id object in array) 如果是顺序枚举 2.使用 for (id object in [arrary reverseObjectEnumerator]) 如果是倒叙枚举 3.使用 for (NSInteger i = 0; i < count; i++) ...
  • 数组 数组是一个存储相同类型元素的固定大小的顺序集合。 所有的数组都是连续的内存位置组成,最低地址的是第一个元素,最高地址的是最后一个元素 ... 声明一个数组不会在内存中初始化数组...
  • ------- Windows Phone 7手机开发、.Net培训、期待与您交流!...我们定义一种枚举类型并且在定义这种类型时,我们要指定这个类型的所有值。 语法: enum 自己取的类型名称{值1,值2,值3…值n} 枚举的定义,
  • 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 ...解释:选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ,这是最接近
  • 在C++中我们知道数组b中的最大下标角为9,我们赋值给b[10]时,即使在数组b中下标10已经越界,但是 编译器还是会留存四个字节的地址给b[10]存放数值3,而a[0]的数组的存放地址恰恰是b[10]的存放地址,这也是a[0]为...
  • 思路:由于冒泡排序有个定理就是逆序数的个数等于最少的交换相邻元素的次数,问题就转换为了交换两个数并且使得整个数组逆序数个数最少,我们枚举交换哪两个数,用树状数组处理b[i][j],f[i][j],i之前大于a[j]的个数...
  • 一维数组 声明数组 datatype[] arrayName;...datatype用于指定被存储在数组中的元素的...初始化数组变量时,您可以赋值给数组数组是一个引用类型,所以您需要使用new关键字来创建数组的实例。数组下标从0...
  • 只有定义属于结构体类型的变量时,系统才会分配空间给该变量。 2、结构体定义类型中不允许对结构体本身的递归定义。 3、结构体定义中可以包含另外的结构体,即结构体是一嵌套的。 4、结构体变量可以在定义时...
  • java数组

    2021-04-21 21:33:30
    需要同时保存多个类型相同的变量并进行处理时,可以考虑用数组。 java的数组特性 java的数组是引用类型; 数组与类、接口、枚举、注解并列,是引用类型的一种; java的数组长度一经确定不能改变; 数组在内存中...
  • 考虑数组的第一个元素a[0],以及最大的一段数组的一段数组(a[i]...a[j]) 有: 1. 0=i=j时,a[0]就是最大的一段 2.0=i 3.0 由此类推,可以将一个大问题(n个元素数组)转化为一个小问题(n-1个元素) ...
  • 基本语法 编写Java程序时,应注意以下几点: 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 类名:对于所有的类来说,类名的...保存文件的时候,你应该使用类名作为文件名保存(切...
  • 小组成员:周其范 胡宝月 上课的时候老师布置的题目是求一个二维...但我们讨论的时候发现了二维有些麻烦,所以我俩在想有没有什么别的方法,最后我们想到了其实二维数组和一位数组有相似之处,可以先把二维数组...
  • OpenJudge-NOI/2.1基本算法之枚举-1813:熄灯问题 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。按下一个按钮后,该按钮以及周围位置...
  • for_in 用于遍历对象中包括原型链上的所有可枚举的(enumerable)的 key,本来不是为遍历数组而存在。 使用 for_in 遍历数组有三点问题: 1、遍历顺序不固定 JavaScript 引擎不保证对象的遍历顺序。数组作为普通...
  • 选择 D = {1},删除后 A 的列为:["c","d","g"] 和 ["a","f","i"],均为非降序排列。 若选择 D = {},那么 A 的列 ["b","a","h"] 就不是非降序排列了。 二、题解 方法一:枚举 枚举每一列,如果遇到 grid[r-1][c]...
  • 认识Java容器——数组

    2020-11-24 21:24:20
    3.这个容器的长度我们用变量控制时,数组就变成了一个动态数组; 4.数组为存入其中的数据进行自动编号,编号从0开始; 5.组成数组的元素可以是基本数据类型,也可以是结构体、枚举体、类; 一维数组 ...
  • 解法 由于arr[i]的范围是[1,105][1,10^5][1,105]所以可以使用枚举法来寻找合适的value值,那么就需要...确定value上下限后就可以枚举value=x时需要找出arr中刚好比x大的值a[i],arr中小于x的部分不变,大于等于x的.
  • Java学习笔记7 数组

    2020-10-20 22:07:41
    需要同时保存多个类型相同的变量并进行处理时,可以考虑用数组,例如:多个人的成绩、多个员工的薪资…… 数组的特点: Java的数组与类、接口、枚举、注解并列,是引用类型的一种; Java的数组长度一经...
  • hdu1427 速算24点

    千次阅读 2014-07-08 10:59:09
    当数组中有7个数字之后表示运算完成 //#pragma comment(linker, "/STACK:102400000,102400000") //HEAD #include #include #include #include #include #include #include #include #inc
  • 384. 打乱数组 mark

    2020-10-16 20:25:18
    题目 很有意思的题目,笔记看注释 掌握解法2,洗牌算法:遍历数组,每次选一个下标,将元素和当前下标元素交换(可以选到... // 官方题解表示当数组元素很多时,有n!种排列,需要lg (n!)比特来保证枚举到每一个排.
  • 在我们push数据进数组里面或者赋值一些动态数据到数组以后,当数组里面出现如例子:[Array(36), Array(14), ob: Observer],后面的__ob__: Observer以后,我们会获取不到该数组里面的值,它是不可枚举的,这时候我们需要用...
  • 思路:最笨最直接的做法枚举数组的所有子数组并求出它们的和。长度为n的数组一共有n*(n-1)/2个子数组时间复杂度为O(n^2) // 遍历数组同时设立两个变量cursum 和maxsum cursum 时跟新cursum 为当前元素值。...
  • 枚举

    2021-04-25 00:32:59
    /** * 一、枚举类的使用 * 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 * 2.要定义一组常量时,强烈建议... * values()方法:返回美剧类型的对象数组,该方法可以很方便地遍历所有的枚举值..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 973
精华内容 389
关键字:

枚举当数组