ਫੰਕਸ਼ਨਾਂ ਦਾ ਮੇਰੇ ਸ਼ਬਦਕੋਸ਼ ਦੀ ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਅਸਫਲ ਕਿਉਂ ਹੁੰਦਾ ਹੈ?
C # ਵਿੱਚ ਕੋਸ਼ ਦੇ ਕੋਸ਼ ਦੇ ਨਾਲ ਕੰਮ ਕਰਨਾ ਯੋਗਾਂ ਦੀਆਂ ਕੁੰਜੀਆਂ ਦਾ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਤਰੀਕਾ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਕੀ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਅਸੀਂ ਫੰਕਸ਼ਨ ਕੁੰਜੀਆਂ ਫੰਕਸ਼ਨ ਕੁੰਜੀਆਂ ਵਜੋਂ ਸਟੋਰ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਫੰਕਸ਼ਨ ਕੁੰਜੀਆਂ ਵਜੋਂ ਫੰਕਸ਼ਨ ਫੰਕਸ਼ਨ ਦੇ ਤੌਰ ਤੇ ਸਟੋਰ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਫੰਕਸ਼ਨ ? ਜੇ ਤੁਸੀਂ ਡਰੇਡਡ cs1950 ਕੰਪਾਈਲਰ ਗਲਤੀ ਇਕੱਲੇ ਨਹੀਂ ਹੋ! ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰ ਇਸ ਮੁੱਦੇ ਵਿੱਚ ਚਲਾਉਂਦੇ ਹਨ ਜਦੋਂ ਸ਼ਬਦਕੋਸ਼ ਨੂੰ ਸਿੱਧੇ ਫੰਕਸ਼ਨ ਦੇ ਹਵਾਲੇ ਸਿੱਧੇ ਤੌਰ ਤੇ. 🤔
ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਬਣਾ ਰਹੇ ਹੋ ਜਿੱਥੇ ਤੁਸੀਂ ਸੰਬੰਧਿਤ ਸੰਦੇਸ਼ਾਂ ਨਾਲ ਬੁਲੀਅਨ-ਰਿਟਰਨਿੰਗ ਕਾਰਜਾਂ ਨੂੰ ਜੋੜਨਾ ਚਾਹੁੰਦੇ ਹੋ. ਤੁਸੀਂ ਇੱਕ ਸ਼ਬਦਕੋਸ਼ ਬਣਾਉਂਦੇ ਹੋ
ਇਸ ਵਿਵਹਾਰ ਨੂੰ ਸਮਝਣ ਲਈ ਵਿੱਚ ਕਿਵੇਂ ਡਾਇਵਿੰਗ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ. ਜਦੋਂ ਕਿ ਸੀ # ਕੰਸਟਰਕਟਰਾਂ ਜਾਂ ਵਿਧੀਆਂ ਦੇ ਅੰਦਰ-ਅੰਦਰ ਪ੍ਰਭਾਵ ਪਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਇਹ ਇੱਕ ਅਰੰਭਕ ਵਿੱਚ ਇਕੋ ਤਬਦੀਲੀ ਨਾਲ ਸੰਘਰਸ਼ ਕਰਦਾ ਹੈ . ਇਹ ਸ਼ੁਰੂਆਤ ਕਰਨ ਵਾਲਿਆਂ ਅਤੇ ਇੱਥੋਂ ਤਕ ਕਿ ਨਿਰਮਲ ਡਿਵੈਲਪਰਾਂ ਲਈ ਉਲਝਣ ਵਾਲਾ ਹੋ ਸਕਦਾ ਹੈ!
ਉਦਾਹਰਣ ਦੇ ਤੌਰ ਤੇ, ਇਸ ਬਾਰੇ ਸੋਚੋ ਕਿ ਕਿਵੇਂ ਵਿਧੀ ਸਮੂਹਾਂ ਵਿੱਚ 1 ਵਿਧੀ ਸਮੂਹਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋ ਜਾਓ ਅਤੇ ਸਪਸ਼ਟ ਡੈਲੀਗੇਟਸ . ਇਸ ਤਰਾਂ ਇੱਕ ਸ਼ਿਫਟ ਨੂੰ ਇੱਕ ਸੰਖੇਪ ਵਿਅੰਜਨ ਦੇਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ 🍳, ਸੀ # ਕੰਪਾਈਲਰ ਨੂੰ ਅਸਪਸ਼ਟਤਾ ਨੂੰ ਸੁਲਝਾਉਣ ਲਈ ਇੱਕ ਸਪਸ਼ਟ ਫੰਕਸ਼ਨ ਦੇ ਦਸਤਖਤ ਦੀ ਜ਼ਰੂਰਤ ਹੈ. ਚਲੋ ਇਸ ਨੂੰ ਕਦਮ ਨਾਲ ਤੋੜੋ!
ਕਮਾਂਡ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਣ |
---|---|
Func<T> | ਡੈਲੀਗੇਟ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਇਕ ਵਿਧੀ ਨੂੰ ਟਾਈਪ ਕਰਨ ਲਈ ਇਕ ਵਿਧੀ ਨੂੰ ਵਾਪਸ ਕਰਨਾ ਇਕ ਕੋਸ਼ ਵਿਚ ਫੰਕਸ਼ਨ ਦੇ ਸੰਦਰਭਾਂ ਨੂੰ ਸਟੋਰ ਕਰਦਾ ਸੀ. |
() => MethodName() | ਇੱਕ ਅਗਿਆਤ ਲਾਂਬਡਾ ਸਮੀਕਰਨ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਇੱਕ method ੰਗ ਨੂੰ ਬੁਲਾਉਂਦਾ ਹੈ. ਇਹ ਸਿੱਧੇ method ੰਗ ਸਮੂਹ ਦੇ ਰੂਪਾਂਤਰਾਂ ਨੂੰ ਰੋਕਦਾ ਹੈ, ਜੋ ਕੰਪਾਈਲਰ ਗਲਤੀਆਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ. |
delegate bool BoolFunc(); | ਇੱਕ ਕਸਟਮ ਡੈਲੀਗੇਟ ਦੀ ਕਿਸਮ ਪਰਿਭਾਸ਼ਤ ਕਰਦਾ ਹੈ ਜੋ ਸਪੱਸ਼ਟ ਰੂਪਾਂ ਵਿੱਚ ਫੰਕਸ਼ਨ ਦਸਤਖਤਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ, ਅਸਕਤਾ ਤੋਂ ਬਿਨਾਂ ਅਸਪਸ਼ਟਤਾ ਤੋਂ ਬਿਨਾਂ ਫੰਕਸ਼ਨ ਸਟੋਰੇਜ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ. |
Dictionary<Func<bool>, string> | ਇੱਕ ਸ਼ਬਦਕੋਸ਼ ਦੇ ਸਟੋਰ ਕਰਨ ਦੇ ਕਾਰਜ ਕੁੰਜੀਆਂ ਅਤੇ ਉਹਨਾਂ ਦੇ ਸੰਬੰਧਿਤ ਸਤਰ ਮੁੱਲਾਂ ਵਜੋਂ ਹਵਾਲੇ ਕਰਦੇ ਹਨ. |
Assert.AreEqual(expected, actual); | ਇੱਕ ਫੰਕਸ਼ਨ ਦਾ ਰਿਟਰਨ ਮੁੱਲ ਸੰਭਾਵਤ ਨਤੀਜੇ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ. |
[SetUp] | ਇੱਕ ਨੂਨਿਟ ਟੈਸਟ ਗੁਣ ਜੋ ਟੈਸਟ ਨਿਰਭਰਤਾ ਅਰੰਭ ਕਰਨ ਲਈ ਲਾਭਦਾਇਕ ਹੈ, ਹਰੇਕ ਟੈਸਟ ਤੋਂ ਪਹਿਲਾਂ ਚਲਾਉਣ ਲਈ ਇੱਕ method ੰਗ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ. |
private static bool MethodName() => true; | ਇੱਕ ਸੰਖੇਪ ਵਿਧੀ ਨੂੰ ਪ੍ਰਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜੋ ਬੁਲੀਅਨ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਸੰਖੇਪ ਕਾਰਜ ਪ੍ਰਣਾਲੀ ਲਈ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ. |
FunctionDictionary[() => TestA()] | ਸ਼ਬਦਕੋਸ਼ ਤੋਂ ਇੱਕ ਮੁੱਲ ਨੂੰ ਇੱਕ ਕੁੰਜੀ ਦੇ ਤੌਰ ਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ, ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਡਿਕਸ਼ਨ ਕੁੰਜੀ ਦੇ ਤੌਰ ਤੇ ਕੰਮ ਦੇ ਸੰਦਰਭ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ. |
internal class Program | ਕਲਾਸ ਨੂੰ ਉਸੇ ਅਸੈਂਬਲੀ ਦੇ ਅੰਦਰ ਪਹੁੰਚਯੋਗ ਵਜੋਂ ਮਾਰਕ ਕਰਦਾ ਹੈ ਪਰ ਬਾਹਰੀ ਨਹੀਂ, ਈਰੈਟਸੂਲੇਸ਼ਨ ਨੂੰ ਲਾਗੂ ਕਰਨਾ. |
C # ਵਿੱਚ ਫੰਕਸ਼ਨ ਸ਼ਬਦਕੋਸ਼ਾਂ ਨੂੰ ਸਮਝਣਾ
ਜਦੋਂ C # * ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਅਜਿਹੀਆਂ ਸਥਿਤੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ ਜਿੱਥੇ ਤੁਹਾਨੂੰ ਫੰਕਸ਼ਨ ਡਿਕਸ਼ਨਰੀ ਦੇ ਅੰਦਰ ਫੰਕਸ਼ਨ . ਇਹ ਆਪਣੇ ਵਿਵਹਾਰ ਨੂੰ ਆਰਜੀ ਤੌਰ ਤੇ ਕੰਮ ਕਰਨ ਲਈ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦਾ ਹੈ. ਹਾਲਾਂਕਿ, ਜੇ ਤੁਸੀਂ ਸ਼ਬਦ-ਕੋਸ਼ ਦੇ ਨਾਮਾਂ ਨਾਲ ਸਿੱਧੇ ਤੌਰ ਤੇ ਅਰੰਭ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋ, ਕੰਪਾਈਲਰ ਵਿਧੀ ਸਮੂਹ ਪਰਿਵਰਤਨ ਮੁੱਦੇ ਦੇ ਕਾਰਨ ਇੱਕ ਗਲਤੀ ਸੁੱਟਦਾ ਹੈ . ਇਹੀ ਹੈ ਜੋ ਪਹਿਲੀ ਉਦਾਹਰਣ ਵਿੱਚ ਵਾਪਰਦਾ ਹੈ, ਜਿੱਥੇ ਫਕਲਜ ਵਿੱਚ ਫੈਟਸ ਵਿੱਚ ਇੱਕ ਫੀਡਰੂਸ ਵਿੱਚ ਇੱਕ ਫੀਡਕੋਸ਼ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, CS1950 . ਹੱਲ ਹੈ ਲਮਬਾਡੇ ਦੇ ਸਮੀਕਰਨ ਜਾਂ ਸਪਸ਼ਟ ਡੈਲੀਗੇਟ , ਜੋ ਕਿ ਫੰਕਸ਼ਨ ਦੇ ਹਵਾਲਿਆਂ ਨੂੰ ਸਹੀ ਤਰ੍ਹਾਂ ਪਰਿਭਾਸ਼ਤ ਕਰਨਾ ਹੈ. 🚀
ਕੰਸਟਰਕਟਰ ਲੀਵਰਜ਼ ਵਿੱਚ ਪਹਿਲਾ ਕੰਮ ਕਰਨ ਵਾਲਾ ਹੱਲ ਵਿਧੀ ਸਮੂਹ ਵਿੱਚ ਤਬਦੀਲੀ ਜੋ ਮੇਟਰ ਦੀਆਂ ਸੰਸਥਾਵਾਂ ਦੇ ਅੰਦਰ ਇਜਾਜ਼ਤ ਹੈ. ਸੀ # ਪਹਿਲਾਂ ਦੇ ਸਕੋਪ ਵਿੱਚ ਡਿਕਸ਼ਨਰ ਦੇ ਅੰਦਰ ਜਾਂ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਡੈਲੀਫਿਕੇਸ਼ਨ ਦੇ ਸਕੋਪ ਵਿੱਚ ਡੈਲੀਗੇਟ ਕਰਨ ਦੇ meleding ੰਗ * ੰਗਾਂ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ. ਇਹ ਪਹੁੰਚ ਆਮ ਤੌਰ ਤੇ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਡਾਇਨਾਮਿਕ ਫੰਕਸ਼ਨ ਅਸਾਈਨਮੈਂਟਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਕਮਾਂਡ ਟ੍ਰਾਂਸਟੀਮੈਂਟਸ ਜਾਂ ਇਵੈਂਟ ਦੁਆਰਾ ਸੰਚਾਲਿਤ architect ਾਂਚਿਆਂ.
ਇਕ ਹੋਰ ਹੱਲ ਵਿਚ ਸਪਸ਼ਟ ਡੈਲੀਗੇਟ ਟਾਈਪ ਦੀ ਵਰਤੋਂ ਵਿਚ ਸ਼ਾਮਲ ਕਰਨਾ . ਇਸ ਦੀ ਬਜਾਏ ਫਨਕ 'ਤੇ ਭਰੋਸਾ ਕਰਨਾ
ਸ਼ੁੱਧਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, ਯੂਨਿਟ ਟੈਸਟ ਨਨੀਟ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਸੀ. ਇਹ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਇਹ ਤਸਦੀਕ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਕਿ ਫੰਕਸ਼ਨ ਮੈਪਿੰਗਸ ਦੀ ਅਨੁਮਾਨਤ ਸਤਰ ਮੁੱਲਾਂ ਨੂੰ ਵਾਪਸ ਕਰ ਦਿੰਦਾ ਹੈ. ਅਭਿਆਸ ਵਿੱਚ, ਟੈਸਟਿੰਗ ਫੰਕਸ਼ਨ ਸ਼ਬਦਕੋਸ਼ਾਂ ਨੂੰ ਜ਼ਰੂਰੀ ਹੁੰਦੇ ਹਨ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨ ਜਾਂ ਗਤੀਸ਼ੀਲ ਐਗਜ਼ੀਕਿ .ਸ਼ਨ ਨਹੀਂ ਕਰਦੇ . ਇੱਕ ਵੀਡੀਓ ਗੇਮ ਇਨਪੁਟ ਸਿਸਟਮ * ਬਾਰੇ ਸੋਚੋ ਜਿੱਥੇ ਵੱਖ ਵੱਖ ਕੁੰਜੀ ਪ੍ਰੈਸ ਵਿਸ਼ੇਸ਼ ਕਿਰਿਆਵਾਂ ਨੂੰ ਟਰਿੱਗਰ ਕਰਦੇ ਹਨ. ਇੱਕ ਕਾਰਜਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤਰਕ ਕਲੀਨਰ ਅਤੇ ਸਕੇਲੇਰ ਬਣਾਉਂਦਾ ਹੈ. 🎮
ਕਾਰਜਾਂ ਨੂੰ ਸੀ # ਵਿੱਚ ਸਟੋਰ ਕਰਨ ਲਈ ਕੋਸ਼ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਸੀ # ਵਿੱਚ method ੰਗ ਦੇ ਸੰਦਰਭਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਫੰਕਸ਼ਨ-ਸਟੋਰ ਕਰਨ ਵਾਲੇ ਸ਼ਬਦਕੋਸ਼ ਨੂੰ ਲਾਗੂ ਕਰਨਾ.
using System;
using System.Collections.Generic;
namespace FuncDictionaryExample
{
internal class Program
{
private Dictionary<Func<bool>, string> FunctionDictionary;
Program()
{
FunctionDictionary = new Dictionary<Func<bool>, string>
{
{ () => TestA(), "Hello" },
{ () => TestB(), "Byebye" }
};
}
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
private bool TestA() => true;
private bool TestB() => false;
}
}
ਵਿਕਲਪਕ ਪਹੁੰਚ: ਸਪਸ਼ਟ ਡੈਲੀਗੇਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਸੰਕਲਨ ਦੀਆਂ ਗਲਤੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਸਪਸ਼ਟ ਡੈਲੀਗੇਟ ਅਸਾਈਨਮੈਂਟ ਦੇ ਅਨੁਕੂਲ ਪਹੁੰਚ.
using System;
using System.Collections.Generic;
namespace FuncDictionaryExample
{
internal class Program
{
private delegate bool BoolFunc();
private Dictionary<BoolFunc, string> FunctionDictionary;
Program()
{
FunctionDictionary = new Dictionary<BoolFunc, string>
{
{ TestA, "Hello" },
{ TestB, "Byebye" }
};
}
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
private static bool TestA() => true;
private static bool TestB() => false;
}
}
ਹੱਲ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟ
ਕਾਰਜ ਸ਼ਬਦਕੋਸ਼ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਨੂਨਿਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਯੂਨਿਟ ਟੈਸਟਿੰਗ.
using NUnit.Framework;
using System.Collections.Generic;
namespace FuncDictionaryTests
{
public class Tests
{
private Dictionary<Func<bool>, string> functionDictionary;
[SetUp]
public void Setup()
{
functionDictionary = new Dictionary<Func<bool>, string>
{
{ () => TestA(), "Hello" },
{ () => TestB(), "Byebye" }
};
}
[Test]
public void TestDictionaryContainsCorrectValues()
{
Assert.AreEqual("Hello", functionDictionary[() => TestA()]);
Assert.AreEqual("Byebye", functionDictionary[() => TestB()]);
}
private bool TestA() => true;
private bool TestB() => false;
}
}
ਸੀ # ਵਿੱਚ ਫੰਕਸ਼ਨ ਸ਼ਬਦਕੋਸ਼ ਦੇ ਸ਼ੁਰੂਆਤੀ ਮੁੱਦਿਆਂ ਨੂੰ ਪਾਰ ਕਰਨਾ
ਇਕ ਹੋਰ ਮਹੱਤਵਪੂਰਣ ਪਹਿਲੂ 'ਤੇ ਵਿਚਾਰ ਕਰਨਾ ਜੋ ਸੀਡਬਲਯੂ ਵਿਚ ਫੰਕਸ਼ਨ ਡਿਕਸ਼ਨਰੀਕਰਣ ਨਾਲ ਕੰਮ ਕਰਨ ਵੇਲੇ ਇਕ ਹੋਰ ਮਹੱਤਵਪੂਰਣ ਪਹਿਲੂ ਅਗਿਆਤ methods ੰਗ * ਅਤੇ ਸ਼ੁਰੂਆਤੀ ਗਲਤੀਆਂ ਦੇ ਹੱਲ ਲਈ ਇਕ ਭੂਮਿਕਾ ਅਦਾ ਕਰੋ. ਜਦੋਂ ਕੋਈ ਵਿਧੀ ਨਾਮ ਸਿੱਧੇ ਤੌਰ ਤੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਕੰਪਾਈਲਰ ਪ੍ਰਤੱਖ ਰੂਪਾਂਤਰਾਂ ਨਾਲ ਸੰਘਰਸ਼ ਕਰਦਾ ਹੈ. ਹਾਲਾਂਕਿ, ਇੱਕ ਲਮਬਾਡੇ ਸਮੀਕਰਨ ਦੇ ਅੰਦਰ ਕਾਰਜ ਨੂੰ ਲਪੇਟ ਕੇ, ਜਿਵੇਂ ਕਿ () => TestA(), ਅਸੀਂ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਾਂ ਕਿ method ੰਗ ਦੇ ਹਵਾਲੇ ਦੀ ਸਹੀ ਵਿਆਖਿਆ ਕੀਤੀ ਗਈ ਹੈ. ਇਹ ਤਕਨੀਕ ਆਮ ਤੌਰ ਤੇ ਈਵੈਂਟ-ਡ੍ਰਾਇਵਿੰਗ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ , ਜਿੱਥੇ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨ ਗਤੀਸ਼ੀਲਤਾ ਨਾਲ ਸਟੋਰ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ.
ਇਕ ਹੋਰ ਸਰਬੋਤਮ ਅਭਿਆਸ ਲਾਭਦਾਇਕ ਹੈ ਫੰਕਸ਼ਨ ਸਟੋਰੇਜ ਨੂੰ ਹੋਰ ਮਜ਼ਬੂਤ ਬਣਾਉਣ ਲਈ ਡੈਲੀਗੇਟ ਕਿਸਮਾਂ. ਜਦੋਂ ਕਿ ਫੰਕ
ਅੰਤ ਵਿੱਚ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਮਹੱਤਵਪੂਰਣ ਹੈ ਕਿ ਸਟੋਰ ਕੀਤੇ ਫੰਕਸ਼ਨਜ਼ ਨੂੰ ਬਣਾਈ ਰੱਖੋ ਰਾਜ ਦੀ ਇਕਸਾਰਤਾ . ਜੇ ਕੋਈ ਕਾਰਜ ਬਾਹਰੀ ਵੇਰੀਏਬਲ ਜਾਂ ਕਲਾਸ ਦੇ ਮੈਂਬਰਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਜਦੋਂ ਨਿਰਧਾਰਤ ਕੀਤੇ ਗਏ ਹਨ ਤਾਂ ਉਨ੍ਹਾਂ ਨੂੰ ਸਹੀ ਤਰ੍ਹਾਂ ਫੜਿਆ ਜਾਂਦਾ ਹੈ. ਮਲਟੀ-ਥ੍ਰੈਡਡ ਐਪਲੀਕੇਸ਼ਨ , ਗਲਤ ਫੰਕਸ਼ਨ ਹਵਾਲੇ ਰੇਸ ਦੀਆਂ ਸਥਿਤੀਆਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੇ ਹਨ. ਥ੍ਰੈਡਲੋਕਲ ਸਟੋਰੇਜ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਜਾਂ ਅਟੱਲ ਫੰਕਸ਼ਨ ਮਾਪਦੰਡ ਇਨ੍ਹਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰ ਸਕਦੇ ਹਨ. ਕਲਪਨਾ ਕਰੋ ਕਿ ਇੱਕ ਟਾਸਕ ਸ਼ਡਿ .ਲ ਇਹ ਗਤੀਸ਼ੀਲਤਾ ਅਧਾਰਤ ਸ਼ਰਤਾਂ ਦੇ ਅਧਾਰ ਤੇ ਚਲਾਉਣ ਲਈ ਕਾਰਜਾਂ ਨੂੰ ਨਿਰਵਿਘਨ ਫਾਂਸੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ. 🚀
C # # ਕੋਸ਼ਾਂ ਵਿੱਚ ਕੰਮ ਕਰਨ ਬਾਰੇ ਆਮ ਸਵਾਲ
- ਕੰਪਾਈਲਰ ਸੀਐਸ 1950 ਗਲਤੀ ਨੂੰ ਕਿਉਂ ਸੁੱਟਦਾ ਹੈ?
- ਕੰਪਾਈਲਰ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਕਿਸੇ method ੰਗ ਸਮੂਹ ਨੂੰ ਚਾਲੂ ਨਹੀਂ ਕਰ ਸਕਦਾ Func<bool> ਇੱਕ ਫੀਲਡ ਦੇ ਸ਼ੁਰੂਆਤੀ ਵਿੱਚ. ਧਰਮ ਪਰਿਵਰਤਨ ਇਕ ਕੰਸਟਰਕਟਰ ਵਰਗੇ man ੰਗ ਦੇ ਅੰਦਰ ਕੰਮ ਕਰਦਾ ਹੈ.
- ਮੈਂ ਫੰਕਸ਼ਨ ਡਿਕਸ਼ਨਰੀ ਸ਼ੁਰੂਆਤੀ ਮੁੱਦਿਆਂ ਨੂੰ ਕਿਵੇਂ ਤੈਅ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਫੰਕਸ਼ਨ ਰੈਫਰੈਂਸ ਨੂੰ ਇੱਕ ਲਮਬਾਡੇ ਸਮੀਕਰਨ ਦੇ ਅੰਦਰ ਲਪੇਟੋ ਜਿਵੇਂ () => TestA() ਸਹੀ ਤਬਦੀਲੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ.
- ਕੀ ਫਨਕ <ਬੂਲ> ਦੀ ਬਜਾਏ ਇੱਕ ਕਸਟਮ ਡੈਲੀਗੇਟ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬਿਹਤਰ ਹੈ?
- ਹਾਂ, ਜਿਵੇਂ ਕਿ ਇੱਕ ਕਸਟਮ ਡੈਲੀਗੇਟ ਦੀ ਪਰਿਭਾਸ਼ਾ delegate bool BoolFunc(); ਕੋਡ ਦੀ ਪੜ੍ਹਨਯੋਗਤਾ ਵਿੱਚ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਅਸਪਸ਼ਟਤਾ ਨੂੰ ਘਟਾਉਣ.
- ਕੀ ਮੈਂ ਇੱਕ ਸ਼ਬਦਕੋਸ਼ ਦੇ ਅੰਦਰ ਮਾਪਦੰਡਾਂ ਨਾਲ ਕਾਰਜਾਂ ਨੂੰ ਸਟੋਰ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਹਾਂ, ਵਰਤੋਂ Func<T, TResult> ਪੈਰਾਮੀਟਰਾਈਜ਼ਡ ਫੰਕਸ਼ਨਾਂ ਲਈ, ਜਿਵੇਂ ਕਿ Func<int, bool> ਕਾਰਜਾਂ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ ਜੋ ਪੂਰਨ ਅੰਕ ਲੈਂਦੇ ਹਨ ਅਤੇ ਬੁਲੀਅਨ ਵਾਪਸ ਕਰਦੇ ਹਨ.
- ਮਲਟੀ-ਥ੍ਰੈਡਡ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਮੈਂ ਫੰਕਸ਼ਨ ਦੀ ਖਰਿਆਈ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਜਿਵੇਂ ਕਿ ਥ੍ਰੈਡ-ਸੁਰੱਖਿਅਤ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ ThreadLocal ਸਟੋਰੇਜ਼ ਜਾਂ ਨਸਲ ਦੇ ਹਾਲਤਾਂ ਤੋਂ ਬਚਣ ਲਈ ਅਣਜਾਣ ਫੰਕਸ਼ਨ ਪੈਰਾਮੀਟਰ
ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਮੁਹਾਰਤ ਪ੍ਰਾਪਤ ਫੰਕਸ਼ਨ ਸਟੋਰੇਜ
ਇੱਕ ਡਿਕਸ਼ਨਰੀ ਦੇ ਅੰਦਰ ਕਾਰਜਾਂ ਨੂੰ ਸਟੋਰ ਕਰ ਰਿਹਾ ਹੈ ਵਿੱਚ ਡਿਕਸ਼ਨਰੀ ਪ੍ਰਭਾਵ ਨਿਯਮ ਦੇ ਕਾਰਨ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦੀ ਹੈ, ਪਰ ਸਹੀ ਤਕਨੀਕਾਂ ਇਸ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦੀਆਂ ਹਨ. ਲਮਬੈਡੇ ਦੇ ਸਮੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਜਾਂ ਸਪੱਸ਼ਟ ਡੈਲੀਗੇਟ , ਡਿਵੈਲਪਰ ਸੰਕਲਪ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਬਾਈਪਾਸ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਲਚਕਦਾਰ ਫੰਕਸ਼ਨ ਮੈਪਿੰਗ ਬਣਾ ਸਕਦੇ ਹਨ. ਇਹ ਪਹੁੰਚ ਗਤੀਸ਼ੀਲ ਵਿਵਹਾਰ ਦੇ ਅਸਾਈਨਮੈਂਟ ਲਈ ਲਾਭਕਾਰੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਇੱਕ ਅਰਜ਼ੀ ਵਿੱਚ ਰੂਟਿੰਗ ਕਮਾਂਡਾਂ.
ਸਧਾਰਣ ਫੰਕਸ਼ਨ ਸਟੋਰੇਜ ਤੋਂ ਇਲਾਵਾ, ਸਮਝਦਾਰੀ ਦੇ ਹਵਾਲੇ ਡਿਜ਼ਾਈਨ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ ਸਕੇਲੇਬਲ ਅਤੇ ਕੁਸ਼ਲ ਹੱਲ. ਹੱਲ. ਕੀ ਬਿਲਡਿੰਗ ਸਟੇਟ ਮਸ਼ੀਨਾਂ, ਇਵੈਂਟ ਹੈਂਡਲਰ, ਜਾਂ ਟਾਸਕ ਹੈਂਡਲਰ , ਸਹੀ ਸ਼ੁਰੂਆਤੀ ਫੰਕਸ਼ਨ ਸ਼ਬਦਕੋਣ ਭਰੋਸੇਯੋਗ ਫਾਂਸੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ. ਸਰਬੋਤਮ ਅਭਿਆਸਾਂ ਨੂੰ ਲਾਗੂ ਕਰਕੇ, ਡਿਵੈਲਪਰ ਮਜ਼ਬੂਤ, ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਅਤੇ ਕਸ਼ਟਸ਼ਨ ਯੋਗ structures ਾਂਚੇ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ. 🎯
ਭਰੋਸੇਯੋਗ ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
- ਤੇ ਅਧਿਕਾਰਤ ਮਾਈਕਰੋਸੌਫਟ ਡੌਕੂਮੈਂਟੇਸ਼ਨ ਫੰਕ ਡੈਲੀਗੇਟ ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਵਰਤੋਂ ਵਿਚ ਸੀ #: ਮਾਈਕ੍ਰੋਸਾੱਫਟ ਡੌਕਸ - ਫੰਕ ਡੈਲੀਗੇਟ
- ਦੀ ਵਿਆਖਿਆ ਵਿਧੀ ਸਮੂਹ ਪਰਿਵਰਤਨ ਸੀ #: ਮਾਈਕ੍ਰੋਸਾੱਫਟ ਡੌਕਸ - ਲਾਂਬਦਾ ਸਮੀਕਰਨ
- ਲਈ ਵਧੀਆ ਅਭਿਆਸ ਕਾਰਜਾਂ ਨੂੰ ਸਟੋਰ ਕਰਨਾ ਇੱਕ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਅਤੇ ਆਮ ਘਾਟ ਤੋਂ ਪਰਹੇਜ਼ ਕਰੋ: ਸਟੈਕ ਓਵਰਫਲੋਅ - ਇੱਕ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਕਾਰਜਾਂ ਨੂੰ ਸਟੋਰ ਕਰਨਾ
- ਵਿਹਾਰਕ ਉਦਾਹਰਣਾਂ ਅਤੇ ਅਸਲ-ਵਿਸ਼ਵ ਵਰਤੋਂ ਡੈਲੀਗੇਟ ਅਤੇ ਫੰਕਸ਼ਨ ਮੈਪਿੰਗਜ਼: ਸੀ # ਕੋਨੇ - ਡੈਲੀਗੇਟ ਅਤੇ ਸਮਾਗਮ