Interfaces conformance checking (is, as) in C#

interface IUID {
    int Id { get; }
}

interface INamed {
    string Name { get; }
}

struct Flower : INamed {
    public string Name { getset; }
}

var rose = new Flower {Name = "Rose"};
var isPId = rose is IUID;
//isPId is False

var isNamed = rose is INamed;
//isNamed is True

var pName = rose as INamed;
var name = pName.Name;
//name is "Rose"