Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>C# Snippets for MicrosoftNew to Visual Studio Code? Get it now.
C# Snippets for Microsoft

C# Snippets for Microsoft

Preview

Taner

|
22 installs
| (0) | Free
C# Snippets
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

vscode extension boilerplate

Version Installs Downloads Rating Star Last Updated

CI PRs Welcome Github Open Issues LICENSE

Features

  • github actions support publish extension to both vs marketplace and open vsx
  • auto generate changelog and publish github release, make sure you enabled the write permission of github actions
  • pnpm/eslint/prettier/ling-staged/simple-git-hooks/stale-dep
  • use esbuild to bundle extension

Setup

After fork this repository and clone it to local, run:

cd <your-extension-directory>
npx setup-boilerplate

You can also just skip this step and adjust the boilerplate by yourself.

Development

Install dependencies by:

pnpm install

Then run and debug extension like in official documentation

Publish

You need set two github actions secrets:

  • VS_MARKETPLACE_TOKEN: Visual Studio Marketplace token
  • OPEN_VSX_TOKEN: Open VSX Registry token
pnpm release

My extensions

  • Open in External App
  • VSCode archive
  • Neo File Utils
  • VSCode FE Helper
  • Modify File Warning
  • Power Edit
  • Adobe Extension Development Tools
  • Scripting Listener

Check all here: publishers/YuTengjing

Examples

// ####### Program.cs Set ########
using Aufgabe04_Sets;

Console.WriteLine("Aufgabe 04 - Sets");

Set<char> set = new Set<char>();
set.Add('A'); set.Add('B'); set.Add('C'); set.Add('D'); set.Add('A');

Console.WriteLine("Menge von chars - Elemente:");
Console.WriteLine("\t\t'A', 'B', 'C', 'D'");
Console.WriteLine("\tTests:");
Console.WriteLine("\t\tenthält 'Z'? - " + set.contains('Z'));
Console.WriteLine("\t\tist leer? - " + set.isEmpty());
Console.WriteLine("\t\tAnzahl Elemente - " + set.size());
Console.WriteLine("\t\tist eingefroren? - " + set.isFrozen());

List<TestClass> elements = new();
elements.Add(new TestClass("A"));
elements.Add(new TestClass("B"));
elements.Add(new TestClass("C"));
elements.Add(new TestClass("D"));
elements.Add(new TestClass("E"));
IUniqueSet<TestClass> frozenSet = new FrozenSet<TestClass>(elements);

Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Eingeforene Menge von TestClass - Elemente:");
Console.WriteLine("\t\t'TestClass.Name = A',");
Console.WriteLine("\t\t'TestClass.Name = B',");
Console.WriteLine("\t\t'TestClass.Name = C',");
Console.WriteLine("\t\t'TestClass.Name = D',");
Console.WriteLine("\t\t'TestClass.Name = E'");
Console.WriteLine("\tTests:");
Console.WriteLine("\t\tenthält 'E'? - " + frozenSet.contains(elements[4]));
Console.WriteLine("\t\tist leer? - " + frozenSet.isEmpty());
Console.WriteLine("\t\tAnzahl Elemente - " + frozenSet.size());
Console.WriteLine("\t\tist eingefroren? - " + frozenSet.isFrozen());

class TestClass
{
    public string Name { get; set; }

    public TestClass(string name)
    {
        Name = name;
    }
}



// //######## ISet.cs ########
using System;
namespace Aufgabe04_Sets
{
	public interface IUniqueSet<T>
	{
		bool contains(T elem);

		bool isEmpty();

		int size();

		bool isFrozen();
	}
}

// //######## Set.cs ########
using System;
namespace Aufgabe04_Sets
{
	public class Set<T> : IUniqueSet<T>
	{

        protected List<T> Elements { get; } = new();

        public Set()
		{
		}

        public void Add(T elem)
        {
            if (!Elements.Contains(elem))
            {
                Elements.Add(elem);
            }
        }

        public bool contains(T elem)
        {
            return (Elements.Contains(elem));
        }

        public bool isEmpty()
        {
            return (Elements.Count == 0);
        }

        public bool isFrozen()
        {
            return (false);
        }

        public int size()
        {
            return (Elements.Count);
        }
    }
}





// //######## FrozenSet.cs ########

using System;
namespace Aufgabe04_Sets
{
	public class FrozenSet<T> : IUniqueSet<T>
    {
        protected List<T> Elements { get; } = new();

        public FrozenSet(IEnumerable<T> values)
        {
            foreach (T elem in values)
            {
                if (!Elements.Contains(elem))
                {
                    Elements.Add(elem);
                }
            }
        }

        public bool contains(T elem)
        {
            return (Elements.Contains(elem));
        }

        public bool isEmpty()
        {
            return (Elements.Count == 0);
        }

        public bool isFrozen()
        {
            return (true);
        }

        public int size()
        {
            return (Elements.Count);
        }
    }
}



Generic Randompicker

// ######################## Program.cs ########################


using RandomChoice; // Testcode ist in dieser Datei enthalten; Implementierung der RandomPicker-Lib in Projekt RandomChoice.

Console.WriteLine("------- Aufgabe 1: Random Picker -------");
Console.WriteLine("========================================");

// Test data
// =====================================
List<string> students = new List<string>
    {
        "James Kirk",
        "Catherine Janeway",
        "David Bowman",
        "Frank Poole",
        "Harry Potter",
        "Hermione Granger",
        "Clark Kent",
        "Bruce Wayne",
        "Diana Prince",
        "Tony Stark",
        "Frodo Baggins",
        "Legolas Greenleaf",
        "Jon Snow",
        "Tyrion Lannister",
        "Sherlock Holmes",
        "John Watson",
        "Dr. Who",
        "Clara Oswald"
    };
// =====================================

Console.WriteLine("----- Random People -----");
Console.WriteLine("-------------------------");

IRandomPicker<Person> picker = new RandomPickerWithoutLayingBack<Person>();
picker.AddItems(students.Select(line => new Person()
{
    FirstName = line.Split(" ")[0].Trim(),
    LastName = line.Split(" ")[1].Trim()
}
).ToArray());

for (int i = 0; i < 5; i++)
    Console.WriteLine(picker.GetRandomElement());

try
{
    if (picker is RandomPickerWithoutLayingBack<Person>)
        ((RandomPickerWithoutLayingBack<Person>)picker).Reset();
    Console.WriteLine("---- Random Pairs ----");
    Console.WriteLine("----------------------");
    while (picker.Count >= 2)
        Console.WriteLine(string.Join("; ", picker.GetRandomElements(2)));
}
catch (IndexOutOfRangeException ex)
{
    System.Console.WriteLine(ex.Message);
}

class Person
{
    public string? FirstName { get; set; }
    public string? LastName { get; set; }
    public override string ToString()
    {
        return $"{FirstName} {LastName}";
    }
}

// ######################## IRandomPicker.cs ########################

namespace RandomChoice;
public interface IRandomPicker<T>
{
    int Count { get; }
    bool Add(T item);
    void AddItems(T[] items);
    void Clear();
    T GetRandomElement();
    IEnumerable<T> GetRandomElements(int numOfElements);
    bool Remove(T item);
}


// ######################## RandomPicker.cs.cs ########################
namespace RandomChoice;
public class RandomPicker<T> : IRandomPicker<T>
{
    protected static readonly Random _rndGen = new Random();
    protected readonly List<T> _elements = new List<T>();

    public virtual int Count => _elements.Count;

    public bool Add(T item)
    {
        if (_elements.Contains(item))
            return false;
        _elements.Add(item);
        return true;
    }
    public void AddItems(T[] items)
    {
        foreach (T item in items)
            Add(item);
    }
    public void Clear()
    {
        _elements.Clear();
    }

    public virtual T GetRandomElement()
    {
        if (_elements.Count > 0)
            return _elements[_rndGen.Next(_elements.Count)];
        else
            throw new IndexOutOfRangeException("No element available.");
    }

    public virtual IEnumerable<T> GetRandomElements(int numOfElements)
    {
        List<T> selectedElements = new List<T>();
        if (_elements.Count > numOfElements)
            for (int i = 0; i < numOfElements; i++)
            {
                var selectedElement = _elements[_rndGen.Next(_elements.Count)];
                if (!selectedElements.Contains(selectedElement))
                    selectedElements.Add(selectedElement);
                else
                    i--;
            }
        else
            throw new IndexOutOfRangeException("Not enough elements available.");
        return selectedElements;
    }

    public bool Remove(T item)
    {
        return _elements.Remove(item);
    }
}




// ######################## RandomPickerWithoutLayingBack.cs ########################
namespace RandomChoice;

public class RandomPickerWithoutLayingBack<T> : RandomPicker<T>
{
    readonly List<T> _usedElements = new List<T>();

    public override T GetRandomElement()
    {
        if (_usedElements.Count == _elements.Count)
           throw new IndexOutOfRangeException("No more elements available.");

        T elem = base.GetRandomElement();
        while (_usedElements.Contains(elem))
            elem = base.GetRandomElement();
        _usedElements.Add(elem);
        return elem;
    }
    public override IEnumerable<T> GetRandomElements(int numOfElements)
    {
        if (_elements.Count - _usedElements.Count >= numOfElements)
        {
            List<T> selectedElements = new List<T>();
            for (int i = 0; i < numOfElements; i++)
            {
                var selectedElement = GetRandomElement();
                if (!selectedElements.Contains(selectedElement))
                    selectedElements.Add(selectedElement);
                else
                    i--;
            }
            return selectedElements;
        }
        else
            throw new IndexOutOfRangeException("Not enough elements available!");
    }
    public void Reset()
    {
        _usedElements.Clear();
    }
}


  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft