欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 線(xiàn)性插值的實(shí)現(xiàn)示例

 更新時(shí)間:2024年03月01日 16:01:31   作者:ou.cs  
線(xiàn)性插值是針對(duì)一維數(shù)據(jù)的插值方法,本文主要介紹了C# 線(xiàn)性插值的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

線(xiàn)性插值是一種常用的插值算法,適用于許多實(shí)際場(chǎng)景。

  • 傳感器數(shù)據(jù)處理:在傳感器數(shù)據(jù)處理中,可能會(huì)出現(xiàn)數(shù)據(jù)點(diǎn)不連續(xù)或不均勻的情況。使用線(xiàn)性插值可以根據(jù)已知的數(shù)據(jù)點(diǎn)來(lái)估算在兩個(gè)數(shù)據(jù)點(diǎn)之間的數(shù)值,從而填補(bǔ)數(shù)據(jù)中的缺失或不連續(xù)之處。

  • 圖像處理:在圖像處理中,可能需要調(diào)整圖像的大小或分辨率。線(xiàn)性插值可以用來(lái)估算新像素點(diǎn)的數(shù)值,從而實(shí)現(xiàn)圖像的縮放或放大。

  • 信號(hào)處理:在數(shù)字信號(hào)處理中,線(xiàn)性插值可以用來(lái)估算信號(hào)在離散時(shí)間點(diǎn)之間的數(shù)值,從而平滑信號(hào)或填充信號(hào)中的缺失值。

  • 數(shù)值模擬:在線(xiàn)性數(shù)值模擬中,線(xiàn)性插值可以用來(lái)逼近復(fù)雜函數(shù)的數(shù)值輸出,從而簡(jiǎn)化數(shù)學(xué)模型的計(jì)算過(guò)程。

  • 運(yùn)動(dòng)學(xué)模型:在線(xiàn)性運(yùn)動(dòng)學(xué)模型中,可能需要根據(jù)已知的位置數(shù)據(jù)來(lái)估算物體在不同時(shí)間點(diǎn)的軌跡或位置信息,線(xiàn)性插值可以幫助實(shí)現(xiàn)這一目標(biāo)。

案例有一組數(shù)據(jù),電壓,溫度會(huì)隨著改變,電壓和溫度都是浮點(diǎn)型數(shù)據(jù),快速獲取(-40~120)整形溫度對(duì)應(yīng)的電壓。

using System;

class Program
{
    static void Main()
    {
        // 假設(shè)已知的電壓-溫度數(shù)據(jù)點(diǎn)
        double[] temperatures = { -40, 0, 25, 50, 100 };
        double[] voltages = { 1.0, 2.5, 3.0, 3.5, 4.0 };

        // 需要獲取的整數(shù)溫度值
        int targetTemperature = 75;

        // 尋找相鄰的溫度數(shù)據(jù)點(diǎn)
        int lowerIndex = Array.BinarySearch(temperatures, targetTemperature);
        if (lowerIndex < 0)
        {
            lowerIndex = ~lowerIndex - 1;
        }
        int upperIndex = lowerIndex + 1;

        // 線(xiàn)性插值計(jì)算電壓值
        double lowerTemperature = temperatures[lowerIndex];
        double upperTemperature = temperatures[upperIndex];
        double lowerVoltage = voltages[lowerIndex];
        double upperVoltage = voltages[upperIndex];

        double interpolatedVoltage = lowerVoltage + (upperVoltage - lowerVoltage) * (targetTemperature - lowerTemperature) / (upperTemperature - lowerTemperature);

        Console.WriteLine($"在溫度 {targetTemperature} 度時(shí)對(duì)應(yīng)的電壓值為: {interpolatedVoltage}");
    }
}

1、分段線(xiàn)性插值

        /// <summary>  
        /// 分段線(xiàn)性插值,將一組數(shù)插值為所需點(diǎn)數(shù)  
        /// </summary>  
        /// <param name="dataIn">待插值的數(shù)據(jù)數(shù)組</param>  
        /// <param name="n">插值點(diǎn)數(shù)</param>  
        /// <returns>插值后的數(shù)據(jù)數(shù)組</returns>  
        public static float[] Interpolation(float[] dataIn, int n)
        {
            float[] dataOut = new float[n];
            int lenIn = dataIn.Length;
            float[] a = new float[lenIn];
            float[] divIn = new float[lenIn];
            float[] divOut = new float[n];

            divIn[0] = 0;

            for (int i = 1; i < lenIn; i++)
            {
                divIn[i] = divIn[i - 1] + 1;
            }

            divOut[0] = 0;

            for (int i = 1; i < n; i++)
            {
                divOut[i] = divOut[i - 1] + lenIn / (float)n;
            }
            int k = 0;
            for (int i = k; i < n; i++)
            {
                for (int j = 0; j < lenIn - 1; j++)
                {
                    if (divOut[i] >= divIn[j] && divOut[i] < divIn[j + 1])
                    {
                        dataOut[i] = (dataIn[j + 1] - dataIn[j]) * (divOut[i] - divIn[j]) / (divIn[j + 1] - divIn[j]) + dataIn[j];
                        k = i;
                    }
                }
            }

            return dataOut;
        }

2、三次樣條插值

        /// <summary>
        /// 三次樣條插值
        /// </summary>
        /// <param name="points">排序好的x、y點(diǎn)集合</param>
        /// <param name="xs">輸入x軸數(shù)據(jù),插值計(jì)算出對(duì)應(yīng)的y軸點(diǎn)</param>
        /// <param name="chf">寫(xiě)1</param>
        /// <returns>返回計(jì)算好的Y軸數(shù)值</returns>
        public static double[] SplineInsertPoint(PointClass[] points, double[] xs, int chf)
        {
            int plength = points.Length;
            double[] h = new double[plength];
            double[] f = new double[plength];
            double[] l = new double[plength];
            double[] v = new double[plength];
            double[] g = new double[plength];

            for (int i = 0; i < plength - 1; i++)
            {
                h[i] = points[i + 1].x - points[i].x;
                f[i] = (points[i + 1].y - points[i].y) / h[i];
            }

            for (int i = 1; i < plength - 1; i++)
            {
                l[i] = h[i] / (h[i - 1] + h[i]);
                v[i] = h[i - 1] / (h[i - 1] + h[i]);
                g[i] = 3 * (l[i] * f[i - 1] + v[i] * f[i]);
            }

            double[] b = new double[plength];
            double[] tem = new double[plength];
            double[] m = new double[plength];
            double f0 = (points[0].y - points[1].y) / (points[0].x - points[1].x);
            double fn = (points[plength - 1].y - points[plength - 2].y) / (points[plength - 1].x - points[plength - 2].x);

            b[1] = v[1] / 2;
            for (int i = 2; i < plength - 2; i++)
            {
                // Console.Write(" " + i);
                b[i] = v[i] / (2 - b[i - 1] * l[i]);
            }
            tem[1] = g[1] / 2;
            for (int i = 2; i < plength - 1; i++)
            {
                //Console.Write(" " + i);
                tem[i] = (g[i] - l[i] * tem[i - 1]) / (2 - l[i] * b[i - 1]);
            }
            m[plength - 2] = tem[plength - 2];
            for (int i = plength - 3; i > 0; i--)
            {
                //Console.Write(" " + i);
                m[i] = tem[i] - b[i] * m[i + 1];
            }
            m[0] = 3 * f[0] / 2.0;
            m[plength - 1] = fn;
            int xlength = xs.Length;
            double[] insertRes = new double[xlength];
            for (int i = 0; i < xlength; i++)
            {
                int j = 0;
                for (j = 0; j < plength; j++)
                {
                    if (xs[i] < points[j].x)
                        break;
                }
                j = j - 1;
                Console.WriteLine(j);
                if (j == -1 || j == points.Length - 1)
                {
                    if (j == -1)
                        throw new Exception("插值下邊界超出");
                    if (j == points.Length - 1 && xs[i] == points[j].x)
                        insertRes[i] = points[j].y;
                    else
                        throw new Exception("插值下邊界超出");
                }
                else
                {
                    double p1;
                    p1 = (xs[i] - points[j + 1].x) / (points[j].x - points[j + 1].x);
                    p1 = p1 * p1;
                    double p2; p2 = (xs[i] - points[j].x) / (points[j + 1].x - points[j].x);
                    p2 = p2 * p2;
                    double p3; p3 = p1 * (1 + 2 * (xs[i] - points[j].x) / (points[j + 1].x - points[j].x)) * points[j].y + p2 * (1 + 2 * (xs[i] - points[j + 1].x) / (points[j].x - points[j + 1].x)) * points[j + 1].y;

                    double p4; p4 = p1 * (xs[i] - points[j].x) * m[j] + p2 * (xs[i] - points[j + 1].x) * m[j + 1];
                    //         Console.WriteLine(m[j] + " " + m[j + 1] + " " + j);
                    p4 = p4 + p3;
                    insertRes[i] = p4;
                    //Console.WriteLine("f(" + xs[i] + ")= " + p4);
                }

            }
            //Console.ReadLine();
            return insertRes;
        }

排序計(jì)算

     public class PointClass
    {
        public double x = 0;
        public double y = 0;
        public PointClass()
        {
            x = 0; y = 0;
        }
        //-------寫(xiě)一個(gè)排序函數(shù),使得輸入的點(diǎn)按順序排列,是因?yàn)椴逯邓惴ǖ囊笫?,x軸遞增有序的---------
        public static PointClass[] DeSortX(PointClass[] points)
        {
            int length = points.Length;
            double temx, temy;
            for (int i = 0; i < length - 1; i++)
            {
                for (int j = 0; j < length - i - 1; j++)
                    if (points[j].x > points[j + 1].x)
                    {

                        temx = points[j + 1].x;
                        points[j + 1].x = points[j].x;
                        points[j].x = temx;
                        temy = points[j + 1].y;
                        points[j + 1].y = points[j].y;
                        points[j].y = temy;
                    }
            }
            return points;
        }

    }

3、拉格朗日插值

(1)一元全區(qū)間不等距插值

        /// <summary>
        /// 一元全區(qū)間不等距插值
        /// 拉格朗日插值算法
        /// </summary>
        /// <param name="x">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的值x(i),要求x(0)<x(1)<...<x(n-1)</param>
        /// <param name="y">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)值y(i),y(i) = f(x(i)), i=0,1,...,n-1</param>
        /// <param name="t">存放指定的插值點(diǎn)的x值</param>
        /// <returns>指定的查指點(diǎn)t的函數(shù)近似值y=f(t)</returns>
        public static double Lagrange(double[] x, double[] y, double t)
        {
            // x,y點(diǎn)數(shù)
            int n = x.Length;
            double z = 0.0;

            // 特例處理
            if (n < 1)
            {
                return (z);
            }
            else if (n == 1)
            {
                z = y[0];
                return (z);
            }
            else if (n == 2)
            {
                z = (y[0] * (t - x[1]) - y[1] * (t - x[0])) / (x[0] - x[1]);
                return (z);
            }

            // 開(kāi)始插值
            int ik = 0;
            while ((x[ik] < t) && (ik < n))
            {
                ik = ik + 1;
            }

            int k = ik - 4;
            if (k < 0)
            {
                k = 0;
            }
            int m = ik + 3;
            if (m > n - 1)
            {
                m = n - 1;
            }
            for (int i = k; i <= m; i++)
            {
                double s = 1.0;
                for (int j = k; j <= m; j++)
                {
                    if (j != i)
                    {
                        // 拉格朗日插值公式
                        s = s * (t - x[j]) / (x[i] - x[j]);
                    }
                }

                z = z + s * y[i];
            }

            return (z);
        }
         /// <summary>
        /// 一元全區(qū)間不等距插值
        /// </summary>
        /// <param name="points">點(diǎn)集(含XY坐標(biāo))</param>
        /// <param name="t"></param>
        /// <returns></returns>
        public static double Lagrange(PointF[] points, double t)
        {
            double[] x = new double[points.Length];
            double[] y = new double[points.Length];
            for (int i = 0; i < points.Length; i++)
            {
                x[i] = points[i].X;
                y[i] = points[i].Y;
            }
            return Lagrange(x, y, t);
        }
        /// <summary>
        /// 一元全區(qū)間不等距插值
        /// </summary>
        /// <param name="points">二元組類(lèi)型的點(diǎn)集(含XY坐標(biāo))</param>
        /// <param name="t"></param>
        /// <returns></returns>
        public static double Lagrange(List<Tuple<double, double>> points, double t)
        {
            double[] x = new double[points.Count];
            double[] y = new double[points.Count];
            for (int i = 0; i < points.Count; i++)
            {
                x[i] = points[i].Item1;
                y[i] = points[i].Item2;
            }
            return Lagrange(x, y, t);
        }
        /// <summary>
        /// 一元全區(qū)間不等距插值,獲得插值后的曲線(xiàn)(折線(xiàn)擬合)數(shù)據(jù)
        /// </summary>
        /// <param name="points">點(diǎn)集(含XY坐標(biāo))</param>
        /// <param name="segment_count">每數(shù)據(jù)段的分割數(shù)</param>
        /// <returns></returns>
        public static PointF[] Lagrange_Curve(PointF[] points, int segment_count = 10)
        {
            int n = points.Length;
            PointF[] segments = new PointF[n * segment_count + 1];
            for (int i = 0; i < points.Length - 1; i++)
            {
                double dt = (points[i + 1].X - points[i].X) / segment_count;
                double t = points[i].X;
                for (int j = 0; j <= segment_count; j++, t += dt)
                {
                    PointF p = new PointF(0.0F, 0.0F);
                    p.X = (float)t;
                    if (j == 0) p.Y = points[i].Y;
                    else if (j == segment_count) p.Y = points[i + 1].Y;
                    else p.Y = (float)(Lagrange(points, t));
                    segments[i] = p;
                }
            }
            return segments;
        }
         /// <summary>
        /// 一元全區(qū)間等距插值
        /// (使用非等距插值的方法)
        /// </summary>
        /// <param name="x0">存放等距n個(gè)結(jié)點(diǎn)中第一個(gè)結(jié)點(diǎn)的值</param>
        /// <param name="step">等距結(jié)點(diǎn)的步長(zhǎng)</param>
        /// <param name="y">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)值y(i),y(i) = f(x(i)), i=0,1,...,n-1</param>
        /// <param name="t">存放指定的插值點(diǎn)的x值</param>
        /// <returns>指定的查指點(diǎn)t的函數(shù)近似值y=f(t)</returns>
        public static double Lagrange(double x0, double step, double[] y, double t)
        {
            double[] x = new double[y.Length];
            for (int i = 0; i < y.Length; i++, x0 += step)
            {
                x[i] = x0;
            }
            return Lagrange(x, y, t);
        }

(2)一元全區(qū)間等距插值

        /// <summary>
        /// 一元全區(qū)間等距插值
        /// </summary>
        /// <param name="x0">存放等距n個(gè)結(jié)點(diǎn)中第一個(gè)結(jié)點(diǎn)的值</param>
        /// <param name="step">等距結(jié)點(diǎn)的步長(zhǎng)</param>
        /// <param name="y">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)值y(i),y(i) = f(x(i)), i=0,1,...,n-1</param>
        /// <param name="t">存放指定的插值點(diǎn)的x值</param>
        /// <returns>指定的查指點(diǎn)t的函數(shù)近似值y=f(t)</returns>
        public static double Lagrange_Equidistant(double x0, double step, double[] y, double t)
        {
            int n = y.Length;
            double z = 0.0;
 
            // 特例處理
            if (n < 1)
            {
                return (z);
            }
            else if (n == 1)
            {
                z = y[0];
                return (z);
            }
            else if (n == 2)
            {
                z = (y[1] * (t - x0) - y[0] * (t - x0 - step)) / step;
                return (z);
            }
 
            // 開(kāi)始插值
            int ik = 0;
            if (t > x0)
            {
                double p = (t - x0) / step;
                ik = (int)p;
                double q = (float)ik;
                if (p > q)
                {
                    ik = ik + 1;
                }
            }
            else
            {
                ik = 0;
            }
            int k = ik - 4;
            if (k < 0)
            {
                k = 0;
            }
            int m = ik + 3;
            if (m > n - 1)
            {
                m = n - 1;
            }
            for (int i = k; i <= m; i++)
            {
                double s = 1.0;
                double xi = x0 + i * step;
 
                for (int j = k; j <= m; j++)
                {
                    if (j != i)
                    {
                        double xj = x0 + j * step;
                        // 拉格朗日插值公式
                        s = s * (t - xj) / (xi - xj);
                    }
                }
 
                z = z + s * y[i];
            }
 
            return (z);
        }

4、埃爾米特插值

(1)埃爾米特不等距插值

        /// <summary>
        /// 埃爾米特不等距插值
        /// </summary>
        /// <param name="x">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的值x(i),要求x(0)<x(1)<...<x(n-1)</param>
        /// <param name="y">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)值y(i),y(i) = f(x(i)), i=0,1,...,n-1</param>
        /// <param name="dy">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)導(dǎo)數(shù)值y'(i),y'(i) = f'(x(i)), i=0,1,...,n-1</param>
        /// <param name="t">存放指定的插值點(diǎn)的x值</param>
        /// <returns>指定的查指點(diǎn)t的函數(shù)近似值y=f(t)</returns>
        public static double Hermite(double[] x, double[] y, double[] dy, double t)
        {
            int n = x.Length;
            double z = 0.0;

            // 循環(huán)插值
            for (int i = 1; i <= n; i++)
            {
                double s = 1.0;

                for (int j = 1; j <= n; j++)
                {
                    if (j != i)
                    {
                        s = s * (t - x[j - 1]) / (x[i - 1] - x[j - 1]);
                    }
                }
                s = s * s;

                double p = 0.0;
                for (int j = 1; j <= n; j++)
                {
                    if (j != i)
                    {
                        p = p + 1.0 / (x[i - 1] - x[j - 1]);
                    }
                }
                double q = y[i - 1] + (t - x[i - 1]) * (dy[i - 1] - 2.0 * y[i - 1] * p);
                z = z + q * s;
            }

            return (z);
        }
        /// <summary>
        /// 埃爾米特等距插值
        /// (使用非等距插值的方法)
        /// </summary>
        /// <param name="x0">存放等距n個(gè)結(jié)點(diǎn)中第一個(gè)結(jié)點(diǎn)的值</param>
        /// <param name="step">等距結(jié)點(diǎn)的步長(zhǎng)</param>
        /// <param name="y">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)值y(i),y(i) = f(x(i)), i=0,1,...,n-1</param>
        /// <param name="dy">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)導(dǎo)數(shù)值y'(i),y'(i) = f'(x(i)), i=0,1,...,n-1</param>
        /// <param name="t">存放指定的插值點(diǎn)的x值</param>
        /// <returns>指定的查指點(diǎn)t的函數(shù)近似值y=f(t)</returns>
        public static double Hermite(double x0, double step, double[] y, double[] dy, double t)
        {
            double[] x = new double[y.Length];
            for (int i = 0; i < y.Length; i++, x0 += step)
            {
                x[i] = x0;
            }
            return Hermite(x, y, dy, t);
        }

(2)埃爾米特等距插值

        /// <summary>
        /// 埃爾米特等距插值
        /// </summary>
        /// <param name="x0">等距n個(gè)結(jié)點(diǎn)中第一個(gè)結(jié)點(diǎn)的值</param>
        /// <param name="step">等距結(jié)點(diǎn)的步長(zhǎng)</param>
        /// <param name="y">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)值y(i),y(i) = f(x(i)), i=0,1,...,n-1</param>
        /// <param name="dy">一維數(shù)組,長(zhǎng)度為n,存放給定的n個(gè)結(jié)點(diǎn)的函數(shù)導(dǎo)數(shù)值y'(i),y'(i) = f'(x(i)), i=0,1,...,n-1</param>
        /// <param name="t">存放指定的插值點(diǎn)的x值</param>
        /// <returns>指定的查指點(diǎn)t的函數(shù)近似值y=f(t)</returns>
        public static double Hermite(double x0, double step, double[] y, double[] dy, double t)
        {
            int n = y.Length;
            double z = 0.0;
 
            // 循環(huán)插值
            for (int i = 1; i <= n; i++)
            {
                double s = 1.0;
                double q = x0 + (i - 1) * step;
                double p;
                for (int j = 1; j <= n; j++)
                {
                    p = x0 + (j - 1) * step;
                    if (j != i)
                    {
                        s = s * (t - p) / (q - p);
                    }
                }
                s = s * s;
 
                p = 0.0;
                for (int j = 1; j <= n; j++)
                {
                    if (j != i)
                    {
                        p = p + 1.0 / (q - (x0 + (j - 1) * step));
                    }
                }
                q = y[i - 1] + (t - q) * (dy[i - 1] - 2.0 * y[i - 1] * p);
                z = z + q * s;
            }
 
            return (z);
        }

到此這篇關(guān)于C# 線(xiàn)性插值的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# 線(xiàn)性插值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • C#實(shí)現(xiàn)在兩個(gè)數(shù)字之間生成隨機(jī)數(shù)的方法

    C#實(shí)現(xiàn)在兩個(gè)數(shù)字之間生成隨機(jī)數(shù)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)在兩個(gè)數(shù)字之間生成隨機(jī)數(shù)的方法,在一些特殊場(chǎng)景會(huì)用到哦,需要的朋友可以參考下
    2014-08-08
  • Unity?UGUI的StandaloneInputModule標(biāo)準(zhǔn)輸入模塊組件使用示例

    Unity?UGUI的StandaloneInputModule標(biāo)準(zhǔn)輸入模塊組件使用示例

    這篇文章主要為大家介紹了Unity?UGUI的StandaloneInputModule標(biāo)準(zhǔn)輸入模塊組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 淺談C#中ListView類(lèi)的用法

    淺談C#中ListView類(lèi)的用法

    這篇文章主要介紹了淺談C#中ListView的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C#設(shè)計(jì)模式之簡(jiǎn)單工廠(chǎng)模式

    C#設(shè)計(jì)模式之簡(jiǎn)單工廠(chǎng)模式

    這篇文章介紹了C#設(shè)計(jì)模式之簡(jiǎn)單工廠(chǎng)模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#壓縮或解壓rar、zip文件方法實(shí)例

    C#壓縮或解壓rar、zip文件方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于C#壓縮或解壓rar、zip文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C#編程自學(xué)之?dāng)?shù)據(jù)類(lèi)型和變量三

    C#編程自學(xué)之?dāng)?shù)據(jù)類(lèi)型和變量三

    C#語(yǔ)言類(lèi)型系統(tǒng)提出的一個(gè)核心概念裝箱(boxing)拆箱(unboxing)。裝箱和取消裝箱的概念是C#的類(lèi)型系統(tǒng)的核心。它在“值類(lèi)型”和“引用類(lèi)型”之間的架起了一座橋梁,使得任何“值類(lèi)型”的值都可以轉(zhuǎn)換為object類(lèi)型的值,反過(guò)來(lái)轉(zhuǎn)換也可以。
    2015-10-10
  • c#中Empty()和DefalutIfEmpty()用法分析

    c#中Empty()和DefalutIfEmpty()用法分析

    這篇文章主要介紹了c#中Empty()和DefalutIfEmpty()用法,以實(shí)例形式分析了針對(duì)不同情況下Empty()和DefalutIfEmpty()用法區(qū)別,需要的朋友可以參考下
    2014-11-11
  • Unity游戲之存儲(chǔ)數(shù)據(jù)

    Unity游戲之存儲(chǔ)數(shù)據(jù)

    這篇文章主要介紹了Unity游戲之存儲(chǔ)數(shù)據(jù),感興趣的同學(xué),可以拷貝代碼,試驗(yàn)一下
    2021-04-04
  • C#基于JsonConvert解析Json數(shù)據(jù)的方法實(shí)例

    C#基于JsonConvert解析Json數(shù)據(jù)的方法實(shí)例

    最近初接觸C#語(yǔ)言,發(fā)現(xiàn)JSON解析這塊和JAVA差異過(guò)大,下面這篇文章主要給大家介紹了關(guān)于C#基于JsonConvert解析Json數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • C#各種正則表達(dá)式驗(yàn)證方法整理大全

    C#各種正則表達(dá)式驗(yàn)證方法整理大全

    許多編程語(yǔ)言和工具都包含對(duì)正則表達(dá)式的支持,C#也不例外,這篇文章主要給大家介紹了關(guān)于C#各種正則表達(dá)式驗(yàn)證方法整理大全的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12

最新評(píng)論